Linux scriptreplay 命令介绍
scriptreplay(回放脚本)命令用于回放由 script(记录脚本)命令记录的终端会话。它可以根据时间信息,以相同的速度和顺序在终端上重现输入和输出的内容。这样,您可以观看您或他人之前在终端上执行的操作,就像看视频一样,但是文件更小,而且可以在回放过程中复制命令。
Linux scriptreplay 命令适用的 Linux 版本
scriptreplay 命令适用于大多数 Linux 发行版,包括 Debian、Ubuntu、Alpine、Arch Linux、Kali Linux、RedHat/CentOS、Fedora、Raspbian 等。如果您的系统没有安装 scriptreplay 命令,您可以根据您的发行版使用以下命令进行安装:
# 基于 apt 的发行版(如 Debian、Ubuntu、Raspbian、Kali Linux 等):
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install bsdutils
# 基于 yum 的发行版(如 RedHat,CentOS 7 等):
[linux@bashcommandnotfound.cn ~]$ sudo yum install util-linux
# 基于 dnf 的发行版(如 Fedora,CentOS 8 等):
[linux@bashcommandnotfound.cn ~]$ sudo dnf install util-linux
# 基于 apk 的发行版(如 Alpine Linux):
[linux@bashcommandnotfound.cn ~]$ sudo apk add --update util-linux
# 基于 pacman 的发行版(如 Arch Linux):
[linux@bashcommandnotfound.cn ~]$ sudo pacman -S util-linux
# 基于 zypper 的发行版(如 openSUSE):
[linux@bashcommandnotfound.cn ~]$ sudo zypper in util-linux
# 基于 pkg 的 FreeBSD 发行版
[linux@bashcommandnotfound.cn ~]$ sudo pkg install util-linux
# 基于 pkg 的 OS X/macOS 发行版:
[linux@bashcommandnotfound.cn ~]$ brew install util-linux
Linux scriptreplay 命令的基本语法
scriptreplay 命令的基本语法格式如下:
scriptreplay [选项]... 时间文件 [类型文件 [分频器]]
其中,时间文件是由 script 命令生成的,记录了每个输出块的时间间隔;类型文件是由 script 命令生成的,记录了终端会话的输入和输出内容;分频器是一个可选的数字参数,用于调整回放的速度,越大则越快。
Linux scriptreplay 命令的常用选项或参数说明
scriptreplay 命令的常用选项或参数如下表所示:
选项 | 参数 | 说明 |
---|---|---|
-h | 无 | 显示帮助信息 |
-V | 无 | 显示版本信息 |
-m | 数字 | 指定最大延迟时间(秒),超过该时间的输出块将被忽略 |
-s | 数字 | 指定回放的开始时间(秒),从该时间开始回放类型文件 |
-t | 数字 | 指定回放的持续时间(秒),只回放该时间段内的类型文件 |
-p | 无 | 在回放过程中暂停,按任意键继续 |
Linux scriptreplay 命令实例详解
实例1:回放 script 命令记录的终端会话
假设您使用 script 命令记录了一个终端会话,生成了 timefile 和 typescript 两个文件,您可以使用 scriptreplay 命令回放这个会话,命令如下:
[linux@bashcommandnotfound.cn ~]$ scriptreplay --timing=timefile typescript
实例2:调整回放的速度
如果您觉得回放的速度太慢或太快,您可以使用分频器参数来调整,分频器越大,回放速度越快,分频器越小,回放速度越慢。例如,您可以使用以下命令将回放速度加快两倍:
[linux@bashcommandnotfound.cn ~]$ scriptreplay --timing=timefile typescript 2
实例3:指定最大延迟时间
如果您在记录终端会话时有较长的停顿,您可以使用 -m 选项来指定最大延迟时间,超过该时间的输出块将被忽略,从而缩短回放的时间。例如,您可以使用以下命令将最大延迟时间设为 2 秒:
[linux@bashcommandnotfound.cn ~]$ scriptreplay --timing=timefile typescript -m 2
实例4:指定回放的开始时间和持续时间
如果您只想回放终端会话的某一部分,您可以使用 -s 选项来指定回放的开始时间,以及 -t 选项来指定回放的持续时间。例如,您可以使用以下命令从第 5 秒开始回放,持续 10 秒:
[linux@bashcommandnotfound.cn ~]$ scriptreplay --timing=timefile typescript -s 5 -t 10
实例5:在回放过程中暂停和继续
如果您想在回放过程中暂停,您可以使用 -p 选项,然后按任意键继续。例如,您可以使用以下命令回放终端会话,并在需要时暂停:
[linux@bashcommandnotfound.cn ~]$ scriptreplay --timing=timefile typescript -p
实例6:回放多个终端会话
如果您使用 script 命令记录了多个终端会话,生成了多个时间文件和类型文件,您可以使用 scriptreplay 命令回放这些会话,只需要将它们按顺序作为参数传递给 scriptreplay 命令。例如,您可以使用以下命令回放三个终端会话:
[linux@bashcommandnotfound.cn ~]$ scriptreplay --timing=timefile1 typescript1 --timing=timefile2 typescript2 --timing=timefile3 typescript3
实例7:回放指定的终端输出
如果您只想回放终端会话中的输出内容,而不是输入内容,您可以使用 -o 选项来指定输出文件,该文件是由 script 命令生成的,记录了终端会话的输出内容。例如,您可以使用以下命令回放终端会话的输出内容:
[linux@bashcommandnotfound.cn ~]$ scriptreplay --timing=timefile --output=outfile
实例8:回放指定的终端输入
如果您只想回放终端会话中的输入内容,而不是输出内容,您可以使用 -i 选项来指定输入文件,该文件是由 script 命令生成的,记录了终端会话的输入内容。例如,您可以使用以下命令回放终端会话的输入内容:
[linux@bashcommandnotfound.cn ~]$ scriptreplay --timing=timefile --input=infile
实例9:回放指定的终端窗口大小
如果您想回放终端会话时,使用与记录时不同的终端窗口大小,您可以使用 -w 选项来指定终端窗口的宽度,以及 -h 选项来指定终端窗口的高度。例如,您可以使用以下命令回放终端会话,使用 80x24 的终端窗口大小:
[linux@bashcommandnotfound.cn ~]$ scriptreplay --timing=timefile typescript -w 80 -h 24
实例10:回放指定的终端类型
如果您想回放终端会话时,使用与记录时不同的终端类型,您可以使用 -T 选项来指定终端类型,该类型必须是终端信息数据库中存在的。例如,您可以使用以下命令回放终端会话,使用 xterm-256color 的终端类型:
[linux@bashcommandnotfound.cn ~]$ scriptreplay --timing=timefile typescript -T xterm-256color
实例11:回放指定的终端颜色
如果您想回放终端会话时,使用与记录时不同的终端颜色,您可以使用 -c 选项来指定终端颜色,该颜色必须是终端支持的。例如,您可以使用以下命令回放终端会话,使用红色的终端颜色:
[linux@bashcommandnotfound.cn ~]$ scriptreplay --timing=timefile typescript -c red
实例12:回放指定的终端字体
如果您想回放终端会话时,使用与记录时不同的终端字体,您可以使用 -f 选项来指定终端字体,该字体必须是终端支持的。例如,您可以使用以下命令回放终端会话,使用 monospace 的终端字体:
[linux@bashcommandnotfound.cn ~]$ scriptreplay --timing=timefile typescript -f monospace
实例13:回放指定的终端标题
如果您想回放终端会话时,使用与记录时不同的终端标题,您可以使用 -T 选项来指定终端标题,该标题可以是任意字符串。例如,您可以使用以下命令回放终端会话,使用 Linux scriptreplay tutorial 的终端标题:
[linux@bashcommandnotfound.cn ~]$ scriptreplay --timing=timefile typescript -T "Linux scriptreplay tutorial"
实例14:回放指定的终端编码
如果您想回放终端会话时,使用与记录时不同的终端编码,您可以使用 -e 选项来指定终端编码,该编码必须是终端支持的。例如,您可以使用以下命令回放终端会话,使用 UTF-8 的终端编码:
[linux@bashcommandnotfound.cn ~]$ scriptreplay --timing=timefile typescript -e UTF-8
实例15:回放指定的终端环境变量
如果您想回放终端会话时,使用与记录时不同的终端环境变量,您可以使用 -E 选项来指定终端环境变量,该变量必须是终端支持的。例如,您可以使用以下命令回放终端会话,使用 LANG=zh_CN 的终端环境变量:
[linux@bashcommandnotfound.cn ~]$ scriptreplay --timing=timefile typescript -E LANG=zh_CN
Linux scriptreplay 命令的注意事项
- scriptreplay 命令需要与 script 命令配合使用,如果您没有使用 script 命令记录终端会话,那么 scriptreplay 命令将无法工作。
- scriptreplay 命令回放的是类型文件中的内容,而不是实时的终端状态,所以如果您在回放过程中修改了终端的内容,那么回放的效果可能会与预期不符。
- 如果您的系统没有安装 scriptreplay 命令,您可能会看到 bash: scriptreplay: command not found 的提示,这时您可以按照上面的方法进行安装。
评论区