script命令用于记录终端会话的输入和输出,1. 使用script filename.txt开始记录到指定文件;2. 不带文件名时默认保存为typescript;3. 加-a选项可追加内容而非覆盖;4. 结合–timing和scriptreplay可实现带时间戳的会话回放;5. 避免输入敏感信息并注意日志安全;6. 用cat、less等工具查看记录文件,部分控制字符可能显示为乱码;该命令适用于教学演示、故障排查、操作审计和学习笔记,结束后输入exit或按ctrl+d即可完成记录,整个过程完整且易于管理。
在 linux 或 macos 的终端中,有时候我们需要记录下整个会话过程,比如调试命令、演示操作、排查问题或作为学习笔记。这时,
script
命令就非常有用。它能完整记录你在终端中输入和输出的所有内容,生成一个可保存的日志文件。
下面介绍
script
命令的基本用法和一些实用技巧。
什么是 script 命令?
script
是一个系统自带的工具,用于将终端会话的输入和输出全部记录到文件中。它会启动一个子 shell,然后把你在终端上看到的所有内容(包括命令、输出、提示符等)都保存下来。
基本用法
script filename.txt
这会开始记录会话,所有内容都会写入
filename.txt
。你可以自定义文件名,比如
Session.log
、
demo.txt
等。
示例:
script my_session.log
执行后你会看到类似提示:
Script started, file is my_session.log
然后你就可以正常输入命令了,所有操作都会被记录。
结束记录时,输入:
exit
或者按
Ctrl+D
。
你会看到:
Script done, file is my_session.log
此时,
my_session.log
中就保存了完整的会话内容。
常用选项和技巧
1. 不带文件名,默认记录到 typescript
如果你不指定文件名:
script
它会默认创建一个名为
typescript
的文件。
2. 追加内容到已有文件
使用
-a
选项可以追加内容,而不是覆盖:
script -a my_session.log
这样多次运行不会丢失之前的记录。
3. 实时显示时间戳(高级用法)
script
本身不直接支持时间戳,但可以结合
scriptreplay
使用。先记录时加上时间信息:
script --timing=timing.log session.log
--timing
会把每条输出的时间信息记录到
timing.log
,之后可以用:
scriptreplay timing.log session.log
来“回放”整个会话过程,就像看录像一样。
4. 避免记录敏感信息
由于
script
会记录所有内容,包括你输入的密码(即使不显示),所以:
- 不要在
script
会话中直接输入明文密码。
- 如果使用
sudo
,建议提前配置免密或注意日志安全。
- 记录完成后及时检查并清理敏感内容。
5. 查看记录文件
记录完成后,可以用任意文本工具查看:
cat my_session.log less my_session.log vim my_session.log
注意:某些控制字符(如清屏、光标移动)可能会显示为乱码。可以使用:
cat -v my_session.log
来查看不可打印字符的可视化表示。
实际应用场景
- 教学或演示:记录操作步骤,便于分享或回看。
- 故障排查:保留完整的命令执行过程,方便事后分析。
- 审计或文档:作为操作日志存档。
- 学习笔记:记录自己练习命令的过程。
注意事项
-
script
记录的是“终端输出”,包括颜色、光标移动等 ANSI 控制码,所以用文本编辑器打开可能看到乱码。推荐用
cat
或
less
查看。
- 不要长时间运行
script
,避免日志文件过大。
- 在脚本中慎用
script
,因为它依赖终端交互环境。
基本上就这些。
script
命令简单但很实用,尤其适合需要保留终端操作痕迹的场景。记住开始和结束的方式,合理命名文件,就能高效地管理你的会话记录。