该script
命令允许您在终端中记录和重放活动。当您想要创建您已采取的步骤的参考或者您正在创建供其他人遵循的教程时,这会很有帮助。
script
输出您运行的所有命令的打字稿。它的工作原理是将您放入一个记录您执行的所有内容的子 shell。当您离开 shell 时,您的会话将保存为纯文本。这script
比重定向输入流更可靠。
基本用法
该script
命令可以不带任何参数运行:
脚本
一个新的捕获会话将开始。您的终端会话将保存到./typescript
您的工作目录中。您可以通过提供script
参数来指定不同的文件:
脚本example_session
使用您的 shell 执行您要记录的命令序列。完成后,按Ctrl+D
或键入exit
以退出子外壳。您将返回到主 shell 会话。
现在您可以检查已创建的会话日志:
猫 example_session
您将看到script
会话的输出中散布着方括号中的注释。这些注释用于script
记录有关终端本身和其中发生的事件的详细信息。
由于日志文件是纯文本,您可以在您喜欢的编辑器中自由操作它们。只需剪掉您不想保留或其他人不应该看到的任何线条。
如果您的会话无意中输出了潜在的敏感信息,或者您想从日志中修剪无关的字符,这将非常有用。script
记录终端中发生的所有事情,包括退格键、换行符和控制字符,其中一些在最终的打字稿中可能不需要。
script
在会话开始和结束时发出它正在写入的文件的名称。您可以通过添加-q
标志以启用安静模式来禁用此输出。
在SHELL
确定所述外壳时,叉用于内处理环境变量被读出。当变量未设置时,script
将默认为sh
.
附加到现有文件
可以将新命令附加到现有的打字稿中。这让您可以通过退出子 shell 并开始新会话来“暂停”和“恢复”录制。
添加-a
标志以将您的命令附加到指定的文件。script
当未给出标志时,将覆盖文件的内容。
脚本 -a example_session
添加时序数据
当您只想记录您的步骤以供以后阅读或共享时,基本打字稿是理想的选择。script
还可以将计时数据与其文本日志一起保存。此信息可用于在命令之间具有适当延迟的情况下重播整个终端会话。
script
使用-t
标志运行以指定写入时序的路径。计时文件具有两列格式。每个条目包含自第一列中的最后一条记录以来经过的时间。第二列记录键入的字符数,从而实现准确的键入速度回放。
script -q -t example_session_timings example_session
重播会话
该scriptreplay
命令读取由script
. 它将它们的输出重播到您的终端中。计时数据将用于将每个键入字符的持续时间与其在原始命令序列中的长度相匹配。
scriptreplay -t example_session_timings example_session
一些打字稿可能包含不必要的延迟或以令人不快的速度运行。使用-d
标志来加速输出。所有记录的计时将除以您通过的数字。
# 运行速度提高 4 倍 scriptreplay -d 4 -t 计时打字稿
您还可以使用该-m
标志来限制各个更新之间的最大延迟。这使您可以指定允许的最长暂停时间(以秒为单位)scriptreplay
,即使打字稿指定了更长的延迟,也将移动到下一个命令。
# 最大延迟 2 秒 scriptreplay -m 2 -t 计时打字稿
与交互式命令一起使用
不建议script
与大量交互的命令一起使用。终端文本编辑器、基于curses 的应用程序和对话框提示可能会在您的打字稿中插入污染性垃圾字符。script
专注于捕获典型的基于文本的输出,而不是操作终端以生成图形界面的命令。
script
不适合与非交互式 shell 一起使用,因为它的内壳本质上始终是交互式的。该命令也不应该与管道输入一起使用。
其他选项
用于指定命令的-c
标志script
。使用此模式时,script
运行命令并捕获其输出,而不是派生一个新的交互式 shell。这可以更有效地捕获一些在不直接连接到 TTY 时行为不同的进程的输出。
该-f
标志指示script
在每个事件后直接写入会话日志。这通过确保立即捕获输出来提高安全性。
该script
手册页说明这个标志也可以用于监视用户的实时终端,如在教师和学生的情况。学生将运行script -f
,然后教师将使用 SSH 连接并实时流式传输打字稿文件。
script
通常不接受符号链接作为打字稿路径。该--force
标志启用此行为,指示script
解析到其目的地的硬链接和软链接。
概括
script
允许您将终端会话记录到具有准确计时数据的纯文本文件中。您可以手动检查、共享和打印打字稿,或使用scriptreplay
.
这些命令包含在最流行的 Linux 发行版中。它们适用于所有终端类型,但个别打字稿可能无法在与用于记录的终端不同的终端中正确重放。为获得最佳结果,请scriptreplay
在与script
.
未经允许不得转载:表盘吧 » 如何使用“脚本”记录 Linux 终端命令