如何将程序的stdout和stderr重定向到一个文件,将stderr重定向到另一个文件?

时间:2017-03-23 17:20:48

标签: bash redirect tee

我希望有一个日志文件merged.log,它存储完整的程序输出(stdout和stderr),这样我就可以看到错误日志和非错误日志,但是只有一个文件error.log错误行,所以我可以快速查看程序中的问题。我尝试过使用tee,但我无法弄清楚如何执行这种特殊类型的重定向。

例如,如果我有以下javascript程序

// outputter.js
console.log('this is stdout');
console.error('this is stderr');

那么两个日志文件应该是

# merged.log
this is stdout
this is stderr

# error.log
this is stderr

1 个答案:

答案 0 :(得分:2)

在BASH中,这对我有用:

((./a.out 2>&1 1>&3 | tee error.log) 3>&1 1>&2) > merged.log 2>&1

this page.

有一个很好的解释