如何使用 Linux 脚本命令捕获终端会话和输出
Linuxscript
命令会从您的终端会话创建一个 typescript 文件。这意味着,如果您调用该script
命令,您将被带到一个“监视和记录”的终端会话子 shell,该子 shell 保存为一个 ASCII 文本文件。使用计时文件创建时,您可以重播会话,包括输出。其目的是,script
您可以通过交互式会话轻松获取任何命令的示例输出,就像它在您的终端中显示的那样。您可以使用退格键、编辑文件、创建文件以及运行简单或复杂的命令。
[读者还喜欢: Linux 命令基础:7 个进程管理命令]
该命令的价值script
在于它能够在终端会话期间捕获任何终端命令的输出,而无需重定向,而重定向并不总是有效。当我试图捕获某个不知何故出错的命令的输出时,我多次感到沮丧,直到我发现script
。使用标准重定向运算符,某些输出可以重定向到文件,而其他命令只会在标准输出或屏幕上显示输出。大多数系统管理员使用该script
命令在软件安装、故障排除或开发和编程时显示输出。
令人惊讶的是,该script
命令并不能帮助您创建 shell 脚本。
脚本选项
与我使用的大多数命令一样,我只使用其中一部分可用选项。该script
命令有几个选项在我自己的工作中从未有用过。我唯一使用的选项是:
-a
用于将新命令和输出附加到以前使用的文件。-q
用于在使用时删除初始的开始和结束语句script
。--t
用于保存播放的时间信息。
当我使用 时script
,我总是使用--t
创建计时文件 和-q
静音模式。我只有-a
在需要将更多信息附加到现有脚本文件时才使用,这种情况很少见。
脚本用法
以下是我使用方式的两个标准示例script
:
$ script --t=<logfile> -q <script file>
并且,附加到script file
:
$ script --t=<logfile> -q -a <script file>
其中logfile
和script file
可以是您选择的名称。当您想要结束并保存文件时,请使用键盘上的Ctrl-D。您可以随意查看、编辑或删除脚本文件和日志文件。它们是简单的 ASCII 文本文件。
以下是一个例子:
$ script --t=script_log -q scriptfile
我运行了该ls
命令who
,然后使用Ctrl-D结束了脚本。
$ ls
blah.txt test1 test2 doc.txt
$ who
root tty1 2021-01-18 09:31
khess pts/0 2021-01-20 14:42 (192.168.0.5)
khess pts/1 2021-01-20 14:47
$ exit
When you press Ctrl-D, the script exits and displays exit.
Use the cat
command to display the contents of scriptfile
.
$ ls
blah.txt file_time scriptfile script.rec shell_record1 shell_record3 time_log
file_log record.scr script_log scriptrecord shell_record2 snap typescript
$ who
root tty1 2021-01-18 09:31
khess pts/0 2021-01-20 14:42 (192.168.0.5)
khess pts/1 2021-01-20 14:47
$ exit
Script done on 2021-01-20 14:47:28-06:00
If you want, you can also cat
the script_log
file.
$ cat script_log
0.088699 31
3.393729 1
0.246070 1
0.540094 2
0.003060 196
0.000195 31
2.136900 1
0.177266 1
0.179336 1
0.540818 2
0.003883 134
0.000210 31
4.676286 6
This is the timing log file that behaves similar to a transaction log for your script
commands and responses. It is important when you play back the file, which I demonstrate in the follow-up article, How to replay terminal sessions recorded with the Linux script command.
[ Learn the basics of using Kubernetes in this free cheat sheet. ]
Wrap up
For me, the best application of the script
command is for training new Linux users on how to use commands and to show them expected output in real-time, as if they were interacting with the terminal session themselves. For more experienced users, you could create a training session that teaches a new software installation or configuration. Training is the application I think of because of my history with training new sysadmins and writing how-to articles for various venues. And since the output is in ASCII text files, you can change the output for your own needs and audiences.