我做了一个基本上是翻译的玩具交互式控制台程序:
$ myprogram > this is user input this is program output
我想将完整的会话(包括用户input和程序输出)传送到日志文件中。 我可以这样做:
$ cat | tee >(myprogram | tee -a file.log) >> file.log > this is user input this is program output $ cat file.log > this is user input this is program output
所以上面的会话将像往常一样显示在terminal上,但是也会被复制到日志文件中。
有一个更好的方法吗? 我不喜欢我如何写日志文件两次,也不知道如何在运行此命令之前记得擦除它。
更简单的形式可以
tee >(myprogram) | tee -a file.log
如果要防止输入再次显示在屏幕上:
tee -a file.log | myprogram | tee -a file.log
脚本 – 使终端会话的打字稿:
script -c "myprogram" file.log
整个会话将被记录到file.log
由于两个进程不能读取相同的输入,所以需要两个tees,一个读取终端输入并写入程序标准输入,另一个读取程序标准输出写入终端输出和file.log:
tee -a file.log | program | tee -a file.log
一个简单的方法是使用脚本命令。 它只是存储你的整个终端会话。 运行它:
script my-interactive-session.log program