当stderr被重定向之后会发生什么stdout,反之亦然?
例如:
someCommand > log.txt 2>&1
对比
someCommand 2>&1 > log.txt
重定向按出现的顺序进行:
someCommand > log.txt 2>&1
fd(1) == stdoutfd(2) == stderrlog.txt结果fd(1) == log.txtfd(2) == fd(1) == log.txtsomeCommand 2>&1 > log.txt
fd(1) == stdoutfd(2) == stderrfd(2) == fd(1) == stdoutlog.txt结果fd(1) == log.txtsomeCommand > log.txt 2>&1- stdout 和 stderr 都为log.txt.
someCommand 2>&1 > log.txt- 标准输出到log.txt,标准错误到前标准输出(屏幕)。
在第一种情况下,stdout 被定向到文件log.txt,然后 stderr 被定向到 stdout 附加到的内容(文件log.txt)。在第二种情况下。stderr 指向 stdout 附加到的东西(可能是 tty),然后 stdout 指向 file log.txt。