dog*_*ane 30 unix linux bash redirect command-line
有什么区别:
cmd > log 2>&1
Run Code Online (Sandbox Code Playgroud)
和
cmd 2>&1 > log
Run Code Online (Sandbox Code Playgroud)
cmd是命令吗?
我应该选择哪个?为什么?
Joh*_*ica 78
订单很重要.推理重定向的方法是从左到右读取它们,并意识到重定向使得流指向同一个地方.它们不会使流相互指向.
那是什么意思?如果你说2>&1
那么你将stderr重定向到当前重定向到stdout的地方.如果stdout进入控制台,那么stderr也是.如果stdout要转到文件,那么stderr也是如此.如果按照这个增长然后重定向标准输出,标准错误仍然指向什么标准输出用来指向.它没有"跟随"stdout到新位置.
cmd > log 2>&1
Run Code Online (Sandbox Code Playgroud)
这会将stdout重定向到log
,然后将stderr重定向到现在重定向stdout的位置,即log
.
最终结果: stdout和stderr都被重定向到log
.
cmd 2>&1 > log
Run Code Online (Sandbox Code Playgroud)
这会将stderr重定向到当前正在重定向stdout的位置,这通常是控制台.然后stdout被重定向到log
.请记住,stderr不会"跟随"stdout,因此它会继续重定向到控制台.
最终结果: stdout被重定向到日志文件,stderr(仍)被发送到控制台.这几乎肯定不是你想要的.
cmd > log 2>&1
Run Code Online (Sandbox Code Playgroud)
重定向STDOUT
到日志,而不是STDERR
重定向STDOUT
.
cmd 2>&1 > log
Run Code Online (Sandbox Code Playgroud)
替换STDERR
为STDOUT
然后将原件 重定向STDOUT
到日志.
归档时间: |
|
查看次数: |
51432 次 |
最近记录: |