script 是 Linux 原生终端会话录制工具,记录伪终端 I/O 流至纯文本文件,支持指定文件名、追加模式及时间戳回放,但不记录 shell 历史或别名展开。

Script 命令是 Linux 下轻量、原生、无需额外安装的终端会话录制工具,适合快速记录命令执行过程、故障复现步骤或教学演示。它不依赖图形界面,纯文本输出,兼容性好,但需注意其记录的是伪终端(PTY)的原始输出,非实时屏幕快照。
基础用法:启动与停止录制
运行 script 命令即开始记录,默认将所有输入和输出保存到名为 typescript 的文件中:
- 执行 script 后,终端提示符会变化(如显示 “Script started…”),此时所有操作(包括命令、回显、错误信息、甚至 Ctrl+C 等控制字符)均被捕获;
- 输入 exit 或按 Ctrl+D 结束会话,脚本自动保存并提示 “Script done.”;
- 生成的 typescript 是纯文本,可用 cat、less 或编辑器直接查看。
指定文件名与时间戳
避免覆盖默认文件,建议每次录制都指定有意义的名称,可结合日期增强可追溯性:
- script session_$(date +%Y%m%d_%H%M).log —— 自动生成带年月日时分的文件名;
- script -a append.log —— 以追加模式写入已有文件(慎用,易混杂多次会话);
- 若中途想暂停/恢复录制,script 本身不支持,需退出后重新启动新会话。
记录过程中的实用技巧
Script 记录的是终端 I/O 流,因此部分交互行为需特别注意:
- 长命令或分屏工具(如 vim、less)的内容可能含大量转义序列(如光标移动、清屏),用 scriptreplay 可还原播放效果(需先用 script -t 同时生成时间戳文件);
- 敏感信息(如密码、密钥)一旦输入即被记录,建议提前用 stty -echo 关闭回显,或改用 read -s 等安全方式输入;
- 若需记录带颜色的输出(如 ls --color),确保终端环境变量 $TERM 正确(如 xterm-256color),否则颜色可能显示为乱码。
回放与分析记录文件
普通查看足够用于审计或回顾,但要真实还原终端交互体验,需配合时间戳:
- 完整录制:script -t 2>timing.log > session.log;
- 回放命令:scriptreplay timing.log session.log —— 按原始节奏逐行显示,支持指定播放速度(如 -d 2 表示两倍延迟);
- 过滤查看:用 grep 提取关键操作,例如 grep '^$ ' session.log 匹配用户输入的命令行(需注意 prompt 格式)。
不复杂但容易忽略:script 默认不记录 shell 历史(history)、别名展开或未执行的输入,它只忠实捕捉终端实际收发的字节流。因此,它反映的是“用户看到了什么、敲了什么”,而非“shell 解析成什么”。


















