使用 tee 将 STDERR 和 STDOUT 捕获到文件

使用 tee 将 STDERR 和 STDOUT 捕获到文件

STDERR我不清楚使用 捕获和STDOUT到同一个文件的最佳顺序是什么tee。我知道如果我想通过管道传输到文件,我必须在重定向后映射文件句柄,即

find . >/tmp/output.txt 2>&1

这指示 shell 发送STDOUT/tmp/output.txt然后发送STDERRSTDOUT(现在是发送到/tmp/output.txt)。

尝试在重定向文件之前执行2>&1将不会产生预期的效果。

但是当我想使用管道时tee应该是:

find . |tee /tmp/output.txt 2>&1   # or
find . 2>&1 |tee /tmp/output.txt   # ?

答案1

后者(find . 2>&1 | tee /tmp/output.txt);它确保原始命令的 STDOUT 和 STDERR 到达同一个 fd,然后将它们一起输入到 tee。在前一种情况下,您要将 tee 命令的 STDERR 与其 STDOUT 连接起来。

相关内容