bash:与重定向输出混淆

诺曼

当我执行此命令(fail.cpp是一个充满编译器错误的简单程序)时,错误不会直接在屏幕上输出,而是在fail.out文件中输出:

g++ fail.cpp > fail.out 2>&1

从我对bash的介绍性理解中,这是有道理的:>将程序输出(stdout,又名1)2>&1重定向到fail.out,而将stderr(又名2)重定向到这个新的stdout位置,也就是文件。(?)

但是更改命令的顺序会使事情有所不同:

g++ fail.cpp 2>&1 > fail.out

现在,错误消息直接显示在屏幕上,fail.out是空白文件。

为什么是这样?似乎与上述想法相同:将此命令将产生的错误重定向到stdout(2>&1),然后将其重定向到fail.out文件。我想念的是操作命令吗?

巴尔玛

2>&1表示“将stderr重定向到当前stdout所连接的位置”,并按从左到右的顺序处理重定向。所以第一个这样做:

  1. 将stdout重定向到fail.out文件。
  2. 将stderr重定向到stdout的当前连接,即fail.out文件

第二个是:

  1. 将stderr重定向到stdout的当前连接,即终端。
  2. 将stdout重定向到fail.out文件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

bash:与重定向输出混淆

来自分类Dev

Bash输入和输出重定向

来自分类Dev

bash中的输入输出重定向

来自分类Dev

bash标准输出无法重定向到文件

来自分类Dev

bash:防止重定向函数的错误与输出混合

来自分类Dev

将我的bash的输出重定向到日志文件

来自分类Dev

bash:忽略退出代码,但保留输出重定向

来自分类Dev

Bash将输出重定向到tty和文件

来自分类Dev

检查bash脚本中是否有标准输出重定向

来自分类Dev

bash重定向块代码输出到函数中

来自分类Dev

请帮助解释此bash输出重定向

来自分类Dev

运行{命令vs通过bash脚本} +重定向输出

来自分类Dev

将我的bash的输出重定向到日志文件

来自分类Dev

Bash将输出重定向到tty和文件

来自分类Dev

Bash脚本:将慢速命令的输出重定向到文件

来自分类Dev

Windows bash重定向输出具有奇怪的编码

来自分类Dev

Bash将标准输出重定向到功能

来自分类Dev

Bash脚本顺序混合在输出的大重定向中

来自分类Dev

Bash:将命令输出重定向到STDOUT和变量

来自分类Dev

在 bash 脚本中重定向标准输入和标准输出

来自分类Dev

通过bash将输出重定向到文件

来自分类Dev

Bash - 如何重定向某个线程的标准输出?

来自分类Dev

重定向命令输出时 Bash 不评估变量

来自分类Dev

重定向程序输出

来自分类Dev

实时输出重定向

来自分类Dev

ASDF输出重定向

来自分类Dev

时间输出重定向

来自分类Dev

程序输出重定向

来自分类Dev

输出重定向