script 是什么
script 把终端会话中的输入与输出原样录制到文件,用于事故复盘、交接演示与取证留痕。配合 --timing 生成计时文件后,还能用 scriptreplay 按原始速度回放。它属于 util-linux,默认的录制文件名是 typescript。
基本信息
| 用途 | 录制终端输入输出到文件 |
|---|---|
| 语法 | script [-q] [选项] [文件] |
| 常用选项 | -q 静默、-a 追加、-c 执行命令、-t 计时文件 |
| 配套工具 | scriptreplay 用于回放 |
典型使用场景
- 记录复杂故障处理过程,便于事后复盘
- 交接演示:把操作步骤留档给同事
- 执行高风险操作时留下操作痕迹
- 只录单条命令的输出用于培训材料
- 配合计时文件回放当时的操作节奏
- 保留现场证据用于事后审查
常用示例
常用示例
script -q session.log # 开始录制,exit 或 Ctrl+D 结束
script -q -a session.log # 追加写入已有文件
script -q -c 'df -h; free -m' -t /tmp/timing.log /tmp/out.log # 录一条命令并计时
scriptreplay --timing=/tmp/timing.log /tmp/out.log # 按原始节奏回放
ls -l session.log # 确认录制文件已生成
less -R session.log # 带控制字符查看,保留颜色
cat -v session.log | head # 去掉控制字符后的可读版本选项与用途
| 选项 | 作用 | 说明 |
|---|---|---|
| -q | 静默模式 | 不显示开始与结束的提示 |
| -a | 追加写入 | 同一份文件多次录制 |
| -c 命令 | 执行指定命令 | 只录这一条命令的输出 |
| -t 文件 | 写入计时数据 | 配合回放使用 |
| 默认文件名 | typescript | 未指定输出文件时使用 |
录制文件包含终端控制字符:直接查看会很乱,用 less -R 或 cat -v 得到可读版本,分享之前先做一次清理。
录制内容可能包含密码、令牌等敏感输入:传播或归档前必须审查与脱敏,在共享环境里这一点尤其重要。
在 script 里再嵌套 script,或运行全屏程序,会产生大量控制字符堆积:它更适合普通命令行操作的留档。
录制文件保存的是终端原始输出:用 less 浏览没问题,但同一段内容在不同宽度的终端里回放效果会有差异。
如果只是想给某条命令的输出留档,直接用重定向比 script 简单得多;script 的价值在于把交互过程一并保留下来。