我想将 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 中执行此操作。)