从前,有一天我在执行demo脚本的时候误输了“script” + 回车,然后就提示:
# root@ishells ~# script
Script started, file is typescript
我就去搜了搜资料,
卧槽,这是一个什么神仙命令!
一、什么是script
script 命令可以记录 用户 在当前终端的所有的操作,即将已经输出到屏幕的内容信息保存到指定的文本文件中。
script 命令可以用来记录或者存档终端活动,记录文件会被存储为文本文件
script 命令录制终端的会话之后,可以通过文本编辑器查看内容,也可以使用 scriptreplay 将其录制的结果 动态 播放。
二、script操作
一般Linux系统在安装的时候就会安装script命令和scriptreplay命令。那我们首先来看看script的用法:
# script --help
2.1 script options
✿ -a 选项 :在现有输出录制的文件的内容上追加新的内容
✿ -c 选项 :后面可以加上需要执行的命令,而不是交互式 shell 上执行的命令
✿ -r 选项 :子进程中返回退出代码
✿ -f 选项 : 如果需要在输出到日志文件的同时,也可以查看日志文件的内容,可以使用 -f 参数。PS: 可以用于教学, 两个命令行接 - f 可以实时演示
✿ -q 选项 :可以使 script 命令以静默模式运行
✿ -t 选项 :指明输出录制的时间数据。-t选项用于将时序数据导入stderr
✿ -V 选项 :输出 script 的版本信息,然后退出
✿ -h 选项 :输出 script 的 help 信息,然后退出
2.2 script举例详解
① 如果你只是在终端输入了script,并没有加上[file]这一项,记录终端的行为会被默认保存到当前工作目录的typescript文件中.
# script
且只有当你输入exit或按下ctrl+d时,录屏才会被写入文件(也就是说如果没有退出,就不会写入录屏数据到文件),如下图所示:
② 指定文件(文件名自定义)
#script demo.his
③ 录制文件的内容
④ -a 选项
向已有录制文件追加“新录制”的内容
⑤ -q选项,静默方式,无输出
⑥ -t选项,-t选项用于将时序数据导入stderr。2>用于stderr重定向到demo.time(不了解文件描述符0、1、2的同学可以去了解一下)
# script -t 2>demo.time -a demo.his
那-t选项产生的这个文件有什么用呢?
当你想通过录制文件demo.his动态展示“录制”的内容时,就需要用到-t产生的这个demo.time文件!如下
# scriptreplay demo.time demo.his
输入以上命令,就会动态演示!注意:时序文件要放在前面!而且!动态播放的内容只会是:使用了-t选项之后的内容,哪怕录制文件中已有数据!
⑦ -c 选项,指定一个要执行的命令
# script -a demo.his -c "pwd"
⑦ -f, - -flush
每次操作后都立即刷新缓存。如果不设置这个选项,则不会实时写入文件
三、scriptreplay
像回放script所录视频一样动态播放终端进行过的操作
3.1常用选项
① -t 选项, - -timing file
后跟包含记录时序的文件
② -s 选项, --typescript file
包含脚本终端输出的文件
① -d 选项,--divisor number
加速播放速度倍数(可以是小数:放慢)
# script -d 5 demo.time demo.his
① -V 选项,- -version
① -h 选项,- -help
四、参考来源
https://www.cnblogs.com/jiaxiaozia/p/12158641.html
https://www.cnblogs.com/happy-king/p/9454527.html
https://www.cnblogs.com/cheyunhua/p/11136161.html
https://blog.csdn.net/ouyang_peng/article/details/78818492