录制与回放终端会话    ==>script、scriptreplay  (制作“命令行技巧”视频教程)

                    — 将输入命令后发生的一切按照时间先后次序记录下来,然后再进行回放


优点:终端脚本文件仅仅是一个文本文件,其文件大小不过是KB级别,远远低于桌面环境视频占用的空间大小
------------------
格式:
script [-a] [-c COMMAND] [-f] [-q] [-t] [file]


 -a      Append the output to “file” or “typescript”,retaining the prior con-  
             tents.(将输出添加到文件或打字文件中,记忆先前的内容)如没有改选项,则默认文件名为typescript

 -t      Output timing data to standard error. (输出时序数据到标准错误输出,默认输出到屏幕上)
   This data contains two  fields, separated by a space. The first field  
   indicates how much time elapsed since the previous output. The second field indi-
             cates how many characters were output this time. This information
             can be used to replay typescripts with realistic typing and out-
             put delays.
   这个数据包含被空格分隔的两个字段。第一个字段指出自先前的输出之后花费了多长时间。第二个字段指出这次有多少个字符被输出。这个信息常被用作回放“打字文件”中的真实的键入和输出延迟
------------------------------
应用一:

1.1  开始录制终端会话:
$script -t 2> timing.log -a output.session
....
....
exit

注:两个配置文件被当做script命令的参数.其中一个文件(timing.log)用于<存储时序信息>,描述每一个命令在何时运行;
 另一个文件(output.session)用于<存储命令输出>
 -t 用于将时序数据导入stderr, 2>则用于将stderr重定向到timing.log
借助这两个文件,可以使用下面的方法回放命令执行过程:

$scriptreplay timing.log output.session       //回放会话

 

-------------------------------
        -f      Flush output after each write.(每次写入之后刷新输出)

应用二:

1.2  建立可在多个用户之间进行广播的视频会话

                 —适用于为计算机实验室或Internet上的用户群演示教程,节省带宽且提供实时体验
$mkfifo scriptfifo   //广播端:创建“命名管道”:mkfifo - make FIFOs (named pipes):用于实现进程间通信
                                  |(命令行的表示方法-管道):是将一个进程的标准输出重定向为另一个进程的标准输入 

                                    需要注意的是:是“标准输出”,而不是“标准错误输出”

                                        示例对比:(验证标准输出)

                                            cat /etc/passwd /etc/adf | grep root --color

                                            cat /etc/passwd /etc/adf | grep cat --color
$cat scriptfifo    //实时播放,倾听会话:听众端  (因为是广播,只能听不能发)
$script -f scriptfifo   //广播端:开始会话,exit结束

 

-----------------------------

收获:

1) 掌握了script、scriptreplay的使用方法;

2)对shell的工作原理理解更加深刻;

3)认识到“进程间通信”,必须查找资料进一步学习“进程”的相关内容

4)"标准输出"和"标准输入"有着更多的内容在里面,需要拓展知识面

------------------------------

英语生词:

 

replay
英 [ri'ple]
vt. 重放;重演;重新比赛
n. 重赛;重播;重演

 

retain [r'ten]
vt. 保持;雇;记住

 

prior
 英 ['pra]
adj. 优先的;事先的;在先的,在前的
adv. 在前,居先
 prior notice事先通知;预先通报

 

timing ['tam]
n. 定时;调速;时间选择

v. 为…安排时间;测定…的时间

 

elapse ['lps]
n. 流逝;时间的过去

vi. 消逝;时间过去

 

realistic [r'lstk]
adj. 现实的;现实主义的;逼真的;实在论的

 

pipe [pap]
n. 管;烟斗;笛
vt. 用管道输送;尖声唱;用管乐器演奏
vi. 吹笛;尖叫