将 stderr 和 stdout 写入一个文件,也可将 stderr 写入另一个文件

Dan*_*nzo 3 linux io shell scripting

我有一个 shell 脚本,我想将其 stdout 和 stderr 写入日志文件。我知道这可以通过以下方式实现

sh script.sh >> both.log 2>&1
Run Code Online (Sandbox Code Playgroud)

但是,我还想同时将 stderr 写入一个单独的文件“error.log”。这是可以实现的吗?

Joh*_*ica 5

您可以使用tee将输出复制到两个位置。将其与一些棘手的重定向结合起来,然后......

script.sh 2>&1 >> both.log | tee -a both.log >> error.log
Run Code Online (Sandbox Code Playgroud)

这会将 stderr 重定向到 stdout,然后将 stdout 重定向到both.log. stderr 保留,并通过管道传输到tee,后者将其复制到两个日志文件。