我制作了一个玩具交互式控制台程序,基本上是一个解释器:
$ myprogram
> this is user input
this is program output
Run Code Online (Sandbox Code Playgroud)
我想将整个会话(用户输入和程序输出)传递到日志文件中.我可以这样做:
$ 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
Run Code Online (Sandbox Code Playgroud)
因此,上述会话将照常显示在终端上,但也会复制到日志文件中.
有一个更好的方法吗?我不喜欢我必须两次写日志文件,也不喜欢在运行此命令之前我必须记得擦除它.
小智 9
脚本 - 制作终端会话的打字稿:
script -c "myprogram" file.log
Run Code Online (Sandbox Code Playgroud)
整个会话将记录到file.log
更简单的形式可能是
tee >(myprogram) | tee -a file.log
Run Code Online (Sandbox Code Playgroud)
如果要阻止输入再次显示在屏幕上:
tee -a file.log | myprogram | tee -a file.log
Run Code Online (Sandbox Code Playgroud)
由于两个进程无法读取相同的输入,需要两个三通,一个读取终端输入并写入程序标准输入,另一个读取程序标准输出并写入终端输出和file.log:
tee -a file.log | program | tee -a file.log
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7849 次 |
| 最近记录: |