如何在文件上保存管道的STDERR和STDOUT?

时间:2013-08-13 16:53:09

标签: bash stdout pipeline stderr

我正在运行具有STDERR和STDOUT输出的命令管道。我想将两个输出保存在一个日志文件中。

这是我尝试这样做的:

bash my_script.sh > log.txt   #Only save STDOUT
bash my_script.sh > >(tee log.txt) 2> >(tee log.txt >&2)  #The STDERR overwrite the STDOUT  

我希望你能提供一个简单的解决方案来做到这一点。 谢谢你的时间!

2 个答案:

答案 0 :(得分:3)

bash my_script.sh> log.txt 2>& 1

其中2>& 1将stderr重定向到stdout

答案 1 :(得分:3)

如何

bash my_script.sh > >(tee log.txt) 2>&1

此外,如果你想在log.txt已经存在的情况下附加输出,请在tee中添加-a选项

bash my_script.sh > >(tee -a log.txt) 2>&1

它实际上相当于bash my_script.sh 2>&1 | tee log.txtbash my_script.sh 2>&1 | tee -a log.txt