企业宣传,产品推广,广告招商,广告投放联系seowdb

I Linux

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 调用。

检查下面的代码


如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

© 版权声明
评论 抢沙发
加载中~
每日一言
不怕万人阻挡,只怕自己投降
Not afraid of people blocking, I'm afraid their surrender