非常奇怪的重定向stdout和stderr问题有人能解释一下吗?

时间:2011-09-26 20:22:30

标签: shell stdout stderr

我有两个调用产生非常不同的输出:

拨打一个:

dmake -m _makefile_.m  1>> _results.out 2>> _results.out

致电二:

dmake -m _makefile_.m >2&1 >_results.out

dmake对排序进行编译,第一次调用正确地内联编译错误,而第二次调用则将所有编译错误放在顶部。我一直认为这两者都是等价的。这两个电话之间到底有什么区别?这是因为缓冲吗?

1 个答案:

答案 0 :(得分:2)

>2&1不是正确的语法;它会将dmake命令的输出重定向到名为2的文件(在后台运行),然后尝试运行名为1的命令,其输出重定向到{{1} }。

你想:

_results.out

如果要附加到文件,请将dmake -m _makefile_.m >_results.out 2>&1 更改为>

我不能100%确定这是否会以你想要的方式散布stdout和stderr。