如何将 stdout 和 stderr 重定向到 bash 中的多个文件?

如何将 stdout 和 stderr 重定向到 bash 中的多个文件?

我想将 stdout 和 stderr 重定向commandlogfile.txt otherfile.txt

目前,我正在这样捕获两者:

command  >> logfile.txt 2>> logfile.txt

这可行,但行不通的是:

node myscript.js 2>&1 >> logfile.txt

这仅记录标准输出。这是一个不起作用的问题,因为如果我想添加第二个文件,我发现的方法2>&1涉及tee.

我使用的是 Linux Mint 19,带有 Bash 版本 4.4.20(1)-release。

答案1

正如中所解释的了解重定向序列,重定向的顺序很重要:

node myscript.js 2>&1 >> logfile.txt

将标准错误重定向到标准输出指向的任何内容,然后将标准输出重定向到logfile.txt没有触及标准错误。

您需要切换顺序:

node myscript.js >> logfile.txt 2>&1

将在 中记录两个输出logfile.txt

但是,如果您想通过管道传输到以下内容,则这不相关tee

node myscript.js 2>&1 | tee -a logfile.txt otherfile.txt

相关内容