重定向到屏幕和文件

重定向到屏幕和文件

除了将它们打印在屏幕上之外,我还想将我运行的命令的所有输出重定向到一个文件。

我希望这会自动发生,我不想tee每次都这样做。

我尝试过exec | tee file,但没用。我该怎么做呢?

这是 Bash,所以PROMPT_COMMAND也是可用的。

答案1

你可以这样做:

exec > >(tee logfile) 2>&1

这会将 shell 的输出和错误流重定向到进程替换>(tee logfile),这会将其保存,logfile同时还将它们输出到终端。

正如用户 mosvy 正确指出的那样在下面的评论中,任何程序输出都会像重定向到文件一样生成。如果实用程序在输出到文件和输出到终端设备之间有所不同,那么输出将与您预期的有所不同。某些需要终端的程序可能根本无法运行。

您还可以使用该script实用程序,它本身会启动一个记录到文件中的交互式 shell。请参阅手册script

相关内容