2.3 录制并回放终端会话

当你需要为别人在终端上演示某些操作或是需要准备一个命令行教程时,通常得一边手动输入命令一边演示,或者也可以录制一段屏幕演示视频,然后再回放出来。其实也有其他的实现方法。利用scriptscriptreplay命令,我们可以录制命令的次序以及时序,将相关数据记录在文本文件中。利用这些文件,其他人可以在终端上回放并查看命令的输出。

2.3.1 预备知识

scriptscirptreplay命令在绝大多数GNU/Linux发行版上都可以找到。把终端会话记录到一个文件中挺好玩的。你可以通过录制终端会话来制作命令行教学视频教程,也可以与他人分享会话记录文件,共同研究如何使用命令行完成某项任务。

2.3.2 实战演练

开始录制终端会话:

$ script -t 2> timing.log -a output.session
type commands;

..
exit

注意,对于不支持单独将stderr重定向到文件的shell(比如csh shell),这则攻略是没法使用的。

两个配置文件被当做script命令的参数。其中一个文件(timing.log)用于存储时序信息,描述每一个命令在何时运行;另一个文件(output.session)用于存储命令输出。-t选项用于将时序数据导入stderr2>则用于将stderr重定向到timing.log。

利用这两个文件:timing.log(存储时序信息)和output.session(存储命令输出信息),我们可以按照下面的方法回放命令执行过程:

$ scriptreplay timing.log output.session
# 按播放命令序列输出

2.3.3 工作原理

通常,我们会录制桌面环境视频来作为教程使用。但是视频需要大量的存储空间,而终端脚本文件仅仅是一个文本文件,其文件大小不过是KB级别。

你可以把timing.log和output.session文件分享给任何想在自己的终端上回放这段终端会话的人。