在 bash 或 zsh 中是否有办法自动将我运行的任何命令的所有输出通过另一个程序传输?
例如,如果我运行这个命令
$ cat /tmp/it
我希望它能够像我写的那样运行:
$ cat /tmp/it | tee /tmp/cmdoutput
其中| tee /tmp/cmdoutput
部分可以是任何命令。我的用例是着色和保存我运行的命令的输出,以便我可以在 vim 中编辑它们,或在 vim 中搜索它们。我已经手动完成了这些事情,但想知道是否有办法自动完成这些事情,并且正在寻找一个通用的解决方案!
答案1
使用 脚本命令:
script 将终端上显示的所有内容打印成一份脚本。对于需要交互式会话的硬拷贝记录作为作业证明的学生来说,这很有用,因为稍后可以使用 lpr(1) 打印出脚本文件。
如果给出了参数文件,脚本会将对话保存在此文件中。如果没有给出文件名,对话将保存在文件 typescript 中。
当您准备开始记录日志文件时,请输入:
script /tmp/cmdoutput
现在,除非你停止脚本,所有输入和输出在终端中将存储在 中cmdoutput
。完成后,只需输入:
exit