如何在文件中捕获 stdout/stderr 但仍然在控制台中看到它?

如何在文件中捕获 stdout/stderr 但仍然在控制台中看到它?

我在 Amazon Linux 上使用 bash 脚本。当我想将 stderr 和 stdout 重定向到文件时,我可以运行

./my_process.pl &>/tmp/out.txt

有没有办法可以将此输出重定向到文件并继续在控制台(在我的 shell 中)上查看它?这是怎么做到的?

答案1

是的,通过使用tee

/my_process.pl 2>&1 | tee /tmp/out.txt

请注意,用于&>file将标准输出和标准错误重定向到文件是某些 shell 接受的 POSIX 标准的扩展。使用起来比较安全>file 2>&1。在这种情况下,&>根本无法使用,因为我们没有重定向到文件。

在 中bash,也可以这样做

/my_process.pl |& tee /tmp/out.txt

这相当于上面的。在ksh93,|&表示某事完全地虽然不同。

答案2

使用命令,这会将和script存储在名为 的文件中。stdinstdouttypescript

相关内容