在stderr
之后重定向stdout
时会发生什么情况,反之亦然?
例如:
someCommand > log.txt 2>&1
VS
someCommand 2>&1 > log.txt
答案 0 :(得分:4)
重定向按照出现顺序完成:
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
答案 1 :(得分:0)
在第一种情况下,stdout被定向到文件log.txt
,然后stderr被定向到附加的stdout(文件log.txt
)。在第二种情况下。 stderr被定向到stdout附加到的东西(可能是tty),然后stdout被定向到文件log.txt
。
答案 2 :(得分:0)
someCommand > log.txt 2>&1
- stdout和stderr都发送到log.txt
。
someCommand 2>&1 > log.txt
- stdout到log.txt
,stderr到前stdout(屏幕)。