当前位置:首页>Linux>Linux script命令:终端时光机,录制你的每一步操作

Linux script命令:终端时光机,录制你的每一步操作

  • 2026-08-28 04:21:21
Linux script命令:终端时光机,录制你的每一步操作

「那些鲜为人知的 Linux 命令」 系列
它就像终端里的「行车记录仪」,默默记录你的一切操作。


你有没有过这种经历?

"刚才那个报错信息是什么来着?"
"我刚刚执行的命令输出怎么没了?"
"能不能把整个操作过程给同事看,而不是一步步截图?"

如果你也遇到过这些情况,那你需要认识一下 script 命令。


script 是什么?

script 是 Linux 自带的终端会话录制工具。它能把你终端上显示的一切内容——输入的命令、输出的结果、甚至是颜色代码——完整记录到一个文件中。

简单理解:它就像给你的终端装了一个"行车记录仪"。

# 开始录制
$ script session.log
Script started, file is session.log

# 此时你做的任何操作都会被录制
$ ls -la
$ cat /etc/hosts
$ echo "hello world"

# 停止录制(Ctrl+D 或 exit)
$ exit
Script done, file is session.log

基础用法

1. 最简单的录制

$ script
# 默认生成 typescript 文件
# 退出:Ctrl+D

2. 指定输出文件

$ script /tmp/my-session-$(date +%Y%m%d-%H%M%S).log

文件名包含时间戳,方便管理多个录制文件。

3. 追加模式(不覆盖已有文件)

$ script -a session.log
  • -a
    (append):追加到已有文件末尾
  • 不加 -a 会覆盖原文件

4. 静默模式

$ script -q session.log

不显示"Script started / Script done"这类提示信息。


高级用法

用法一:回放录制内容

录制完成后,可以用 cat 或 less 直接查看:

$ cat session.log

但更专业的做法是用 scriptreplay 来回放:

# 录制时同时记录时间信息
$ script --timing=timing.log session.log

# 回放(带真实的时间节奏)
$ scriptreplay timing.log session.log

这会按照你操作时的真实时间间隔重新播放每一步,就像看电影回放一样。


用法二:把录制内容转换成命令脚本

# 录制交互式操作
$ script session.log
# ... 执行各种操作 ...
$ exit

# 之后提取纯命令(去掉输出和提示符)
$ grep '^\$' session.log | sed 's/^\$ //' > replay.sh

这对于制作教程和知识沉淀非常有用。


用法三:远程协作的「操作日志」

# SSH 登录到服务器后立即开始录制
$ ssh user@server
$ script /var/log/ops/$(whoami)-$(date +%F).log

把所有运维操作记录下来,出问题时可以追溯每一步。


用法四:在脚本中自动录制

#!/bin/bash
LOGDIR="/var/log/script-records"
mkdir -p "$LOGDIR"

# 自动开始录制
script -q -c "bash --rcfile <(echo 'PS1=\"[REC] \w \$ \"')" \
  "$LOGDIR/$(whoami)-$(date +%Y%m%d-%H%M%S).log"

把这个放在 /etc/profile 或 /etc/bash.bashrc 中,就能实现所有用户操作自动记录。


参数速查表

参数
含义
示例
-a
追加模式
script -a log.txt
-q
静默模式
script -q log.txt
-c CMD
只录制指定命令
script -c "ls -la"
--timing=FILE
记录时间信息
script --timing=t.log
-t
输出到终端的同时录制
已废弃,用 --timing
-f
实时写入(flush)
script -f log.txt

实战场景

场景一:记录编译过程

$ script compile.log
$ make -j8
$ # 如果出错,所有信息都在 compile.log 里
$ exit

场景二:制作教学视频的文字稿

$ script --timing=demo.timing demo.log
$ # 演示各种操作...
$ exit

# 发给学员
$ mail -s "今日课程回放" student@example.com < demo.log

场景三:调试复杂问题

$ script debug-$(date +%s).log
$ # 复现 bug 的所有操作
$ exit

# 把记录发给同事或保存到知识库

macOS 上的情况

macOS 自带 script,但和 Linux 版有些差异。建议:

brew install util-linux  # 获得 GNU 版本

script 的局限性

  1. 不能录制交互式程序
    (如 vim、top),因为这类程序使用了终端控制序列,script 录制的内容会包含大量乱码。
  2. 文件会很大
    ——如果你录制了几个小时的操作,文件可能达到几十 MB。
  3. 安全性
    ——录制的文件包含明文输出,如果涉及密码等敏感信息,需要注意保管。

总结

script 是你终端操作的最忠实记录者。它让"刚才发生了什么"不再是一个问题。

下次上线操作前,先敲一个 script deploy.log,关键时刻它能救命。

最新文章

随机文章