Linux命令 scriptreplay - 重新播放終端會(huì)話的所有操作

2022-03-18 17:54 更新

scriptreplay

重新播放終端會(huì)話的所有操作

補(bǔ)充說明

scriptreplay 用于在終端中,根據(jù) script 命令記錄的終端數(shù)據(jù)文件和時(shí)間日志文件,重現(xiàn)當(dāng)時(shí)用戶的所有操作和命令的輸出信息。簡而言之,重現(xiàn)播放當(dāng)時(shí)終端會(huì)話發(fā)生的一切信息,而不是重新運(yùn)行一遍命令。例如,用戶當(dāng)時(shí)在輸入某條命令時(shí),字符的鍵入和刪除也都會(huì)被重現(xiàn)。非常適合用于教程演示場(chǎng)合。而且,在機(jī)器 A 上面使用 script 命令記錄終端操作,可以在機(jī)器 B 上面使用 scriptreplay 命令重新播放。

語法

scriptreplay [options] [-t] timingfile [typescript [divisor]]

選項(xiàng)

-t, --timing file         # 記錄時(shí)間日志的文件名稱
-s, --typescript file     # 記錄終端數(shù)據(jù)信息的日志文件名稱
-d, --divisor number      # 表示倍速播放,把時(shí)間日志文件記錄的時(shí)間間隔都除以 number
                          # -d 2 表示播放速度是原始輸入單條命令的速度的兩倍,-d 0.1 表示播放單條命令的速度減慢 10 倍
-m, --maxdelay number     # 表示命令之間的最大延遲時(shí)間(單位是秒)
                          # -m 2 表示 command.log 中存放的兩條命令之間的間隔時(shí)間如果大于兩秒,則按兩秒執(zhí)行播放
-V, --version             # 顯示版本信息并退出
-h, --help                # 顯示幫助文本并退出

參數(shù)

  • 時(shí)間日志文件:存儲(chǔ)時(shí)間日志信息的文件名稱
  • 終端數(shù)據(jù)文件:存儲(chǔ)終端數(shù)據(jù)信息的文件名稱

實(shí)例

# 重新播放終端內(nèi)容,默認(rèn)第一個(gè)參數(shù)是時(shí)間日志,第二個(gè)參數(shù)是終端數(shù)據(jù)文件
scriptreplay time.file command.log
# 重新播放終端內(nèi)容,播放快進(jìn)速度為 1 ,命令之間最大延時(shí)為 2 秒
scriptreplay -d 1 -m 2 -t time.file -s command.log

記錄終端內(nèi)容到文件

zfb@localhost:~$ script -t 2>time.file -a -f command.log
Script started, file is command.log
zfb@localhost:~$ echo "hello, world"
hello, world
zfb@localhost:~$ echo $(date "+%Y-%m-%d %H:%M:%S")
2020-12-23 20:48:46
zfb@localhost:~$ echo "Bye"
Bye
zfb@localhost:~$ ls -al
total 20
drwxr-xr-x  2 zfb zfb 4096 Dec 23 20:48 .
drwxr-xr-x 37 zfb zfb 4096 Dec 23 20:49 ..
-rw-r--r--  1 zfb zfb    0 Dec 23 19:03 a.txt
-rw-r--r--  1 zfb zfb   12 Dec 23 19:04 b.txt
-rw-r--r--  1 zfb zfb 2744 Dec 23 20:49 command.log
-rw-r--r--  1 zfb zfb  790 Dec 23 20:49 time.file
zfb@localhost:~$ exit
Script done, file is command.log
zfb@localhost:~$

重新播放終端內(nèi)容

zfb@localhost:~$ scriptreplay -d 1 -m 2 -t time.file -s command.log
zfb@localhost:~$ echo "hello, world"
hello, world
zfb@localhost:~$ echo $(date "+%Y-%m-%d %H:%M:%S")
2020-12-23 20:48:46
zfb@localhost:~$ echo "Bye"
Bye
zfb@localhost:~$ ls -al
total 20
drwxr-xr-x  2 zfb zfb 4096 Dec 23 20:48 .
drwxr-xr-x 37 zfb zfb 4096 Dec 23 20:49 ..
-rw-r--r--  1 zfb zfb    0 Dec 23 19:03 a.txt
-rw-r--r--  1 zfb zfb   12 Dec 23 19:04 b.txt
-rw-r--r--  1 zfb zfb 2744 Dec 23 20:49 command.log
-rw-r--r--  1 zfb zfb  790 Dec 23 20:49 time.file
zfb@localhost:~$ exit

zfb@localhost:~$

其中,只有命令scriptreplay -d 1 -m 2 -t time.file -s command.log是用戶輸入,其他均為自動(dòng)呈現(xiàn)(且視覺效果與真實(shí)用戶的操作一致)。通過查看上面輸出的時(shí)間2020-12-23 20:48:46,可以證明,這是重新播放當(dāng)時(shí)的記錄,而非重新執(zhí)行一遍命令。也就是說,可以把time.file和command.log文件移動(dòng)到任意一臺(tái)支持scriptreplay命令的機(jī)器上,都可以動(dòng)態(tài)重現(xiàn)命令輸入與終端回顯。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)