Unix 命令行的性能之一是经常使用输入/输入重定向和管道。在本次会议中,咱们引见了输入、输入和失误流的重定向。
Linux I/O重定向
规范输入、规范输入和规范失误
bash shell 具备三个基本流;它从 stdin(流 0)失掉输入,将输入发送到 stdout(流 1),并将失误信息发送到 stderr(流 2)。
键盘理论用作规范输入,而规范输入和规范失误都衔接到显示器。这或者会让 Linux 新用户感到困惑,由于没有显著的方法来识别 stdout 和 stderr。有阅历的用户知道将输入与失误离开十分有用。
下一节将解释如何重定向这些流。
输入重定向
规范输入 (>)
stdout 可以经常使用大于号重定向。扫描该行时,shell 将看到 > 符号并肃清文件。
理想上,> 符号是 1> 的缩写(stdout 被称为流 1)。
请留意,bash shell 在口头参数 0 之前有效地从命令行删除了重定向。这象征着在此命令的状况下:
shell 只计算两个参数(echo = 参数 0,hello = 参数 1)。在参数计数出现之前重定向被删除。
输入文件被删除
扫描该行时,shell 将看到 > 符号并肃清文件!由于这出当初解析参数 0 之前,这象征着即使命令失败,文件也将被肃清!
过设置 noclobber 选项可以防止经常使用 > 时擦除文件。
否决noclobber
noclobber 可以用 >| 来否决。
追加 (>>)
经常使用 >> 将输入附加到文件。
失误重定向
2> 规范失误
重定向 stderr 是经过 2> 实现的。这关于防止屏幕上出现失误信息十分有用。
上方的屏幕截图显示了 stdout 重定向到文件,stderr 重定向到 /dev/null。写 1> 与 > 相反。
要将 stdout 和 stderr 重定向到同一文件,请经常使用 2>&1。
请留意,重定向的顺序很关键。例如,命令
将规范输入(文件形容符 1)和规范失误(文件形容符 2)定向到文件目录列表,而命令
仅将规范输入定向到文件 dirlist,由于规范失误在规范输入重定向到 dirlist 之前复制了规范输入。
输入重定向和管道
自动状况下,在命令行上经常使用管道时,无法在 stderr 内启动 grep,由于只传递了 stdout。
经常使用 2>&1 您可以强迫 stderr 转到 stdout。这使得管道中的下一个命令能够作用于两个流。
您不能同时经常使用 1>&2 和 2>&1 来切换 stdout 和 stderr。
您须要第三个流来在管道符号之后切换 stdout 和 stderr。
衔接 stdout 和 stderr
&> 结构会将 stdout 和 stderr 放入一个流中(到一个文件)。
输入重定向
规范输入(<)
重定向规范输入是经过 < (0< 的简写)实现的。
here-is-document是一种追加输入直到遇到特定序列(理论是EOF)的方法。 EOF 标志可以按字面输入,也可以经常使用 Ctrl-D 调用。
审核上方的代码
假设本文对你有协助,那么请你资助我,让我更有热情的写下去,协助更多的人。
本站内容来源于网络,如不慎侵犯了您的权益,请联系我们将迅速删除。