./prog 2>&1 1>file.txt
重定向和之间有什么区别./prog >a.txt 2>&1
? 看起来./prog 2>&1 1>file.txt
不会将 stderr 保存到文件,但是这个./prog >a.txt 2>&1
会。
答案1
重定向操作符从左到右进行检查,因此
foo > bar 2>&1
第一的将标准输出重定向到bar
,然后将标准错误重定向到此时标准输出重定向的位置(因此bar
也是如此)。
foo 2>&1 > bar
第一的将标准错误重定向到标准输出指向的位置(很可能是终端),然后将标准输出重定向到bar
。
简而言之:第一个将stdout
和重定向stderr
到bar
,第二个仅重定向stdout
到bar
和stderr
终端。