![使用 tee 将 STDERR 和 STDOUT 捕获到文件](https://linux22.com/image/529835/%E4%BD%BF%E7%94%A8%20tee%20%E5%B0%86%20STDERR%20%E5%92%8C%20STDOUT%20%E6%8D%95%E8%8E%B7%E5%88%B0%E6%96%87%E4%BB%B6.png)
STDERR
我不清楚使用 捕获和STDOUT
到同一个文件的最佳顺序是什么tee
。我知道如果我想通过管道传输到文件,我必须在重定向后映射文件句柄,即
find . >/tmp/output.txt 2>&1
这指示 shell 发送STDOUT
到/tmp/output.txt
然后发送STDERR
到STDOUT
(现在是发送到/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 连接起来。