Linux命令-scriptreplay(终端会话回放)

📅 2026/7/21 4:11:46
Linux命令-scriptreplay(终端会话回放)
Linux命令-scriptreplay终端会话回放快速参考基本回放控制回放速度回放指定终端类型录制与回放完整流程制作教程录制最佳实践与其他工具配合与 script 的时间文件格式选项速查scriptreplay是script命令的配套工具用于按原始时间节奏回放由script -t录制的终端会话。它读取时序文件和输出文件以与录制时相同的时间间隔重新呈现终端操作过程是制作命令行教程和操作回溯的绝佳工具。快速参考scriptreplay[选项]时间文件[输出文件][倍率]scriptreplay需要配合script -t使用。-t选项会生成一个时序文件记录每次输出的时间间隔scriptreplay据此还原播放节奏。基本回放# 录制阶段使用 script -tscript-t2timing.log output.log# ... 执行各种操作 ...exit# 回放阶段scriptreplay timing.log output.log# 等效写法指定全路径scriptreplay timing.log output.log1控制回放速度# 2 倍速回放加快播放scriptreplay timing.log output.log2# 0.5 倍速慢放适合学习scriptreplay timing.log output.log0.5# 4 倍速快速浏览scriptreplay timing.log output.log4# 使用 -d 选项指定倍率新版语法scriptreplay-d2timing.log output.log# 使用 -m 选项限制最大暂停时间# 如果录制中有长时间暂停跳过超过3秒的等待scriptreplay-m3timing.log output.log回放指定终端类型# 指定终端类型scriptreplay-txterm timing.log output.log scriptreplay-tscreentiming.log output.log scriptreplay-tlinux timing.log output.log# 在 tmux 窗格中回放tmux new-windowscriptreplay timing.log output.log录制与回放完整流程#!/bin/bash# 完整的录制-回放教程工具# 用法: ./tutorial_tool.sh record|replay|listBASE_DIR./terminal_recordingscase${1:-help}inrecord)NAME${2:-session_$(date %H%M%S)}SESSION_DIR${BASE_DIR}/${NAME}mkdir-p$SESSION_DIROUTPUT${SESSION_DIR}/output.logTIMING${SESSION_DIR}/timing.logechoecho 终端录制:$NAMEecho 时间:$(date)echoecho输入 exit 或 CtrlD 结束录制echoscript-q-t2$TIMING$OUTPUTechoecho录制已保存到:$SESSION_DIRecho回放:$0replay$NAME;;replay)NAME$2if[-z$NAME];thenecho可用录制:ls$BASE_DIR/2/dev/nullexit1fiSESSION_DIR${BASE_DIR}/${NAME}SPEED${3:-1}if[!-f${SESSION_DIR}/timing.log];thenecho错误: 找不到录制$NAMEexit1fiecho回放:$NAME(${SPEED}x)scriptreplay${SESSION_DIR}/timing.log${SESSION_DIR}/output.log$SPEED;;list)echo可用录制:fordirin$BASE_DIR/*/;doname$(basename$dir)date$(stat-c%y$dir/output.log2/dev/null|cut-d.-f1)size$(du-sh$dir2/dev/null|cut-f1)echo$name($date,$size)done;;*)echo用法:$0{record|replay|list}echo record [名称] - 开始录制终端会话echo replay 名称 [速度] - 回放录制echo list - 列出所有录制;;esac制作教程录制最佳实践#!/bin/bash# 教程录制最佳实践脚本# 在录制前清屏、设定提示符# 1. 设置简洁的提示符exportPS1\[\033[01;32m\]\u\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ # 2. 清屏clear# 3. 开始录制script-q-t2timing.log output.log# 录制中# - 操作前先说明意图用 echo 或注释# - 每步操作间隔适当停顿# - 命令后查看结果# - 结束前总结# 4. 回放验证# scriptreplay timing.log output.log 1.5 # 1.5倍速验证与其他工具配合# 将回放内容输出到文件去掉时间因素scriptreplay-d1000timing.log output.logplain_output.txt# 在录制中添加水印/标记script-q-t2timing.log-c echo 操作开始: $(date) echo 操作者: $(whoami) echo 主机: $(hostname) echo # ... 实际操作 ... echo 操作结束 output.log# 批量回放多个录制fordirinterminal_recordings/*/;doname$(basename$dir)echo--- 回放:$name---scriptreplay${dir}/timing.log${dir}/output.log4# 4倍速批量浏览sleep1done# 录制中模拟慢速操作script-q-t2timing.log output.log# 在命令之间加 sleep 来控制节奏echo第一步: 查看当前目录sleep1ls-lasleep1echo第二步: 创建文件sleep1touchdemo.txtsleep1echo第三步: 查看文件sleep1catdemo.txtexit与 script 的时间文件格式# 时间文件格式说明每行两个数字# 秒.微秒 字节数# 例如:# 0.123456 50 - 等待 0.123 秒后输出 50 字节# 0.001000 12 - 等待 0.001 秒后输出 12 字节# 查看时间文件内容cattiming.log# 0.000000 65# 0.123456 23# 2.500000 156# ...# 统计总录制时长awk{sum$1} END{printf 总时长: %.2f 秒\n, sum}timing.log# 统计总输出字节数awk{sum$2} END{printf 总输出: %d 字节\n, sum}timing.log# 分析操作密度每秒输出字节数awk{time$1; bytes$2} END{printf 平均速率: %.0f 字节/秒\n, bytes/time}timing.log选项速查选项说明-d DIVISOR回放速度倍率22倍速-m MAX_WAIT最大等待时间跳过长暂停-s SPEED与-d功能相同-t TERM指定终端类型-V显示版本信息scriptreplay将终端操作变成了可回放、可分发的视频在命令行教程制作中具有独特价值。结合-d加速和-m跳过长暂停可以快速浏览长时间的录制内容。