如果你这样做
ipconfig.exe 1> output.log 2>&1
这会将所有输出(stdout和stderr)都指向“output.log”。
但是,如果您这样做(更改指定所需重定向的顺序)
ipconfig.exe 2>&1 1> output.log
这不会达到将输出流打印到“output.log”的预期效果,因为在这种情况下“stderr”将打印到控制台。
我怀疑这与“cmd”分析具有不同含义的命令的方式有关,具体取决于您指定重定向的顺序。
如果是,那么语义规则是什么?它们在哪里记录?
我认为这是值得发现的事情,因为它可能会浪费时间,让他们摸不着头脑,试图弄清楚为什么他们的重定向不起作用。
答案 0 :(得分:4)
重定向只是从左到右解析。最初stdout
和stderr
指向控制台,因此当您将stderr
重定向到第二个示例中当前指向的stdout
时,您正在指示stderr
到控制台。然后,您随后将stdout
重定向到文件。
解释和示例here非常适合进一步参考。