我制作了一个玩具互动控制台程序,基本上是一个翻译:
$ myprogram
> this is user input
this is program output
我想将整个会话(用户输入和程序输出)传递到日志文件中。我可以这样做:
$ 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
因此,上述会话将照常显示在终端上,但也会复制到日志文件中。
有更好的方法吗?我不喜欢我必须两次写日志文件,也不喜欢在运行此命令之前我必须记得擦除它。
答案 0 :(得分:8)
脚本 - 制作终端会话的打字稿:
script -c "myprogram" file.log
整个会话将记录到file.log
答案 1 :(得分:5)
更简单的形式可能是
tee >(myprogram) | tee -a file.log
如果您想阻止输入再次显示在屏幕上:
tee -a file.log | myprogram | tee -a file.log
答案 2 :(得分:5)
由于两个进程无法读取相同的输入,需要两个三通,一个读取终端输入并写入程序标准输入,另一个读取程序标准输出并写入终端输出和file.log:< / p>
tee -a file.log | program | tee -a file.log
答案 3 :(得分:2)
一种简单的方法是使用脚本命令。它只存储您的整个终端会话。运行它:
script my-interactive-session.log program