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