除了将它们打印在屏幕上之外,我还想将我运行的命令的所有输出重定向到一个文件。
我希望这会自动发生,我不想tee
每次都这样做。
我尝试过exec | tee file
,但没用。我该怎么做呢?
这是 Bash,所以PROMPT_COMMAND
也是可用的。
答案1
你可以这样做:
exec > >(tee logfile) 2>&1
这会将 shell 的输出和错误流重定向到进程替换>(tee logfile)
,这会将其保存,logfile
同时还将它们输出到终端。
正如用户 mosvy 正确指出的那样在下面的评论中,任何程序输出都会像重定向到文件一样生成。如果实用程序在输出到文件和输出到终端设备之间有所不同,那么输出将与您预期的有所不同。某些需要终端的程序可能根本无法运行。
您还可以使用该script
实用程序,它本身会启动一个记录到文件中的交互式 shell。请参阅手册script
。