Shell 录制并回放终端会话

Shell 录制并回放终端会话,将屏幕会话录制成视频肯定有用,不过对于调试终端会话或是提供shell教程来说,视频有些“杀鸡用牛刀”了。

shell给出了另一种选择。script命令能够录制你的击键以及击键时机,并将输入和输出结果保存在对应的文件中。scriptreplay命令可以回放会话。

Shell 录制并回放终端会话

预备知识

scriptscriptreplay命令在绝大多数GNU/Linux发行版上都可以找到。你可以通过录制终端会话来制作命令行技巧视频教程,也可以与他人分享会话记录文件,研究如何使用命令行完成某项任务。你甚至可以调用其他解释器并录制发送给该解释器的击键。但你无法记录vi、emacs或其他将字符映射到屏幕特定位置的应用程序。

实战演练

开始录制终端会话:

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

完整的录制过程如下:

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

# 演示tclsh
$ tclsh
% puts [expr 2 + 2]
4
% exit
$ exit

注意,该攻略不适用于不支持单独将stderr重定向到文件的shell,比如csh shell。

可以指定一个文件名作为script命令的参数。该文件将保存击键及命令结果。如果指定了-t选项,script命令会把时序数据发送到stdout。可以将这些数据重定向到其他文件中(timing.log),这样该文件中就记录了每次击键的时机以及输出信息。上面的例子中使用2>stderr重定向到了文件timing.log。

利用文件timing.log和output.session,可以按照下面的方法回放命令执行过程:

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

工作原理

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

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程