小编典典

cmd 2>&1>日志与cmd>日志2>&1

linux

之间有什么区别?

cmd > log 2>&1

cmd 2>&1 > log

命令在哪里?

我应该选择哪个?为什么?


阅读 764

收藏
2020-06-03

共1个答案

小编典典

顺序很重要。进行重定向的方法是从左到右读取它们,并意识到重定向使流指向同一位置。它们不会使流指向彼此。

这意味着什么?如果您说的话,2>&1那么您会将stderr重定向到stdout当前重定向到的位置。如果stdout要进入控制台,则stderr也将进入。如果stdout要去一个文件,那么stderr也是。如果您随后通过重定向stdout进行此操作,则stderr仍将指向stdout
过去 指向的内容。它不会“按照”标准输出到新位置。

cmd > log 2>&1

这会将stdout重定向到log,然后将stderr重定向到现在正在将stdout重定向到的位置log

最终结果: 将stdout和stderr都重定向到log

错误

cmd 2>&1 > log

这会将stderr重定向到当前正在将stdout重定向到的任何位置,通常是控制台。然后将stdout重定向到log。请记住,stderr不会“遵循”
stdout,因此它将继续重定向到控制台。

最终结果: stdout被重定向到日志文件,并且stderr被(仍然)发送到控制台。几乎可以肯定这不是您想要的。

2020-06-03