我怎样才能redirect和附加stdout和stderr到Bash文件?
要将stdoutredirect到Bash中的截断文件,我知道使用:
cmd > file.txt 要在Bash中redirectstdout ,附加到一个文件,我知道使用:
 cmd >> file.txt 
为了将stdout和stderrredirect到截断的文件,我知道使用:
 cmd &> file.txt 
 如何redirectstdout和stderr追加到文件?  cmd &>> file.txt没有为我工作。 
 cmd >>file.txt 2>&1 
Bash执行从左到右的redirect,如下所示:
-   >>file.txt:以追加模式打开file.txt,并在那里redirectstdout。
-   2>&1:将stderrredirect到“当前正在执行的stdout” 。 在这种情况下,这是一个以追加模式打开的文件。 换句话说,&1重用了stdout当前使用的文件描述符。
有两种方法可以做到这一点,这取决于你的Bash版本。
经典和便携( Bash pre-4 )方式是:
 cmd >> outfile 2>&1 
从Bash 4开始的一个不便携的方法是
 cmd &>> outfile 
  (类似于&> outfile ) 
对于良好的编码风格,你应该
- 决定可移植性是一个问题(然后使用经典的方式)
- 即使对Bash pre-4来说,可移植性也是一个问题(然后用经典的方式)
- 无论使用哪种语法,都不要在同一个脚本中改变它(混淆!)
 如果您的脚本已经以#!/bin/sh开头(无论是否有意),那么Bash 4解决scheme,以及任何Bash特定的代码,是不是要走的路。 
 还要记住,Bash 4 &>>只是更短的语法 – 它不会引入任何新的function或类似的东西。 
语法是(旁边其他redirect语法)在这里描述: http : //bash-hackers.org/wiki/doku.php/syntax/redirection#appending_redirected_output_and_error_output
在Bash中,你也可以明确地指定你的redirect到不同的文件:
 cmd >log.out 2>log_error.out 
追加将是:
 cmd >>log.out 2>>log_error.out 
在Bash 4(以及ZSH 4.3.11)中:
 cmd &>>outfile 
只是在框外
这应该工作得很好:
 your_command 2>&1 | tee -a file.txt 
它会将所有日志存储在file.txt中 ,并将其转储到terminal上。
尝试这个
 You_command 1>output.log 2>&1 
您使用&> x.file在bash4中工作。 对不起:(
这里有一些额外的提示。
0,1,2 … 9是bash中的文件描述符。 0代表stdin,1代表标准输出,2代表stderror。 3〜9用于其他临时使用。
任何文件描述符可以通过运算符>或>>(附加)redirect到其他文件描述符或文件。
用法:< file_descriptor >> < filename | &file_descriptor >