![记录 shell 输出](https://linux22.com/image/1130173/%E8%AE%B0%E5%BD%95%20shell%20%E8%BE%93%E5%87%BA.png)
我想记录所有交互式 shell 输出。每当我使用终端时,打印到终端的所有内容也会放入文件中。
我试过
bash|tee log.txt
大部分情况下都有效。唯一的问题是某些命令(如手册页)无法正确显示。我猜他们测试了交互式 shell,但没有找到?
有什么办法可以实现我想要的效果吗?
答案1
使用script
和scriptreplay
。
从man script
DESCRIPTION
script makes a typescript of everything displayed on your terminal. It is useful for students who need a hardcopy record
of an interactive session as proof of an assignment, as the typescript file can be printed out later with lpr(1).
If the argument file is given, script saves the dialogue in this file. If no filename is given, the dialogue is saved in
the file typescript.
您可以使用例如cat
、、 ...查看会话日志。但请注意,在会话期间使用或之类的东西会产生大量转义字符,这些字符会使输出混乱。我不知道有什么方法可以避免这种情况。less
vim
man
vim
如果你需要记录覆盖屏幕的程序的输出,你还需要记录时间信息
script --timing=mytiming mysession
这样做可以让你及时回放会话
scriptreplay -t mytiming -s mysession
该参数-d
可以指定加速/减速因子。