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 连接起来。