windows cmd:为什么指定输出重定向的顺序很重要?

时间:2014-07-14 22:02:55

标签: windows cmd io-redirection

如果你这样做

ipconfig.exe 1> output.log 2>&1

这会将所有输出(stdout和stderr)都指向“output.log”。

但是,如果您这样做(更改指定所需重定向的顺序)

ipconfig.exe 2>&1 1> output.log

这不会达到将输出流打印到“output.log”的预期效果,因为在这种情况下“stderr”将打印到控制台。

我怀疑这与“cmd”分析具有不同含义的命令的方式有关,具体取决于您指定重定向的顺序。

如果是,那么语义规则是什么?它们在哪里记录?

我认为这是值得发现的事情,因为它可能会浪费时间,让他们摸不着头脑,试图弄清楚为什么他们的重定向不起作用。

1 个答案:

答案 0 :(得分:4)

重定向只是从左到右解析。最初stdoutstderr指向控制台,因此当您将stderr重定向到第二个示例中当前指向的stdout时,您正在指示stderr到控制台。然后,您随后将stdout重定向到文件。

解释和示例here非常适合进一步参考。

相关问题