Linux:重定向 stdout 和 stderr

Linux:重定向 stdout 和 stderr

我想将 stdout 写入文件,但也打印 stdout 和 stderr。我尝试使用 tee:

prog | tee stdout.txt

但这会导致打印的 stderr 和 stdout 错误地交错,即如果正确的输出应该是

OUT1 ERR1
OUT2 ERR2
OUT3 ERR3
OUT4 ERR4

使用 tee 可能会无序打印它们,例如:

ERR1 ERR2
OUT1
OUT2 
OUT3 ERR3 
OUT4
ERR4

有没有办法将 stdout 和 stderr 打印到屏幕上并将 stdout 写入文件而不吞噬打印的输出?

答案1

我会将 stdout 转发到一个文件,然后使用 tail 查看写入的文件内容。这意味着您需要打开两个终端。

一号航站楼:

prog > stdout.txt

二号航站楼:

tail -f stdout.txt

因此,在终端二中,您将看到写入 stdout.txt 的 stdout 内容,而在终端一中,您将看到 stderr。您还可以将 stdout 和 stderr 转发到一个文件,并执行相同的操作。在这种情况下,您需要使用prog >& outerr.txt。(这在 tcsh 上有效,但您也可以在 bash 中执行此操作。)

相关内容