我怎样才能重定向并追加stdout和stderr到Bash文件?
要将stdout重定向到Bash中的截断文件,我知道使用:
cmd > file.txt
要在Bash中重定向stdout,附加到一个文件,我知道要使用:
cmd >> file.txt
要将stdout和stderr重定向到截断的文件,我知道要使用:
cmd &> file.txt
如何重定向stdout和stderr追加到文件? cmd &>> file.txt
不适用于我。
cmd >>file.txt 2>&1
Bash执行从左到右的重定向,如下所示:
>>file.txt
:以追加模式打开file.txt
在那里重定向stdout
。 2>&1
:将stderr
重定向到“当前正在执行的stdout
”。 在这种情况下,这是一个以追加模式打开的文件。 换句话说, &1
重用了stdout
当前使用的文件描述符。 有两种方法可以执行此操作,具体取决于您的Bash版本。
经典和便携式( Bash pre-4 )方式是:
cmd >> outfile 2>&1
从Bash 4开始,一个不便携的方法是
cmd &>> outfile
(类似于&> outfile
)
对于良好的编码风格,你应该
如果您的脚本已经以#!/bin/sh
开头(无论是否有意),那么Bash 4解决方案以及通常任何Bash特定的代码都是不可行的。
还要记住,Bash 4 &>>
只是更短的语法 - 它不会引入任何新功能或类似的东西。
语法是(除了其他重定向语法)在这里描述:http://bash-hackers.org/wiki/doku.php/syntax/redirection#appending_redirected_output_and_error_output
在Bash中,您还可以明确指定您的重定向到不同的文件:
cmd >log.out 2>log_error.out
追加将是:
cmd >>log.out 2>>log_error.out
链接地址: http://www.djcxy.com/p/5921.html
上一篇: How can I redirect and append both stdout and stderr to a file with Bash?