当stderr
被重定向之后会发生什么stdout
,反之亦然?
例如:
someCommand > log.txt 2>&1
对比
someCommand 2>&1 > log.txt
重定向按出现的顺序进行:
someCommand > log.txt 2>&1
fd(1) == stdout
fd(2) == stderr
log.txt
结果fd(1) == log.txt
fd(2) == fd(1) == log.txt
someCommand 2>&1 > log.txt
fd(1) == stdout
fd(2) == stderr
fd(2) == fd(1) == stdout
log.txt
结果fd(1) == log.txt
someCommand > 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
。