在 UNIX 和 Linux 系统上捕获屏幕快照和程序交互: 第 1 部分,程序交互
2010-10-09 08:53:20 来源:WEB开发网使用 script 命令
尽管诸如 bash -i |& tee output_file.txt 这样的 UNIX 和 Linux 命令并不那么复杂,但是要键入它们、记住 "|" 和 "&" 字符的正确顺序、记住 tee 命令等等,也是很麻烦的。大多数 UNIX 和 Linux 系统上可用的一个更为简单的解决方案是 script 命令,它可以为您做到所有这一切。script 命令启动一个子 shell,并将您键入的所有内容、您运行的任何程序的所有输出以及这些程序产生的任何错误的一份副本保存到一个输出文件。如果您没有指定用来保存所有内容的文件的名称,script 命令会创建一个叫做 typescript 的文件,但是您也可以在命令行指定将被写入内容的文件的名称。例如,下面这个命令将您键入的所有内容、所有程序输出和任何错误消息捕获到 output_file.txt 文件:
script output_file.txt
类似于使用交互式 shell(前一节已讨论),通过键入 exit 命令(大多数系统上也可以按 Control-d 组合键)退出 script 命令并关闭它的输出文件。
如果比较由上一节讨论的交互式 shell 机制产生的输出文件的内容和使用 script 命令产生的输出文件的内容,您马上会注意到,script 命令产生的文件通常包含控制字符,即退格、回车、用于显示某些提示的特殊字符以及您编辑前一个 shell 命令时使用的字符等等。script 命令创建的输出文件包含这些字符,因为它们包含您键入的所有内容的完好记录,不包含 shell 是怎么解释它的。使用前一节讨论的交互式 shell 机制产生的输出文件不包含这些字符,因为它们包含在退格和回车这类控制字符被处理之后最终发送到 shell 的内容。
使用您喜欢的文本编辑器清理 script 输出文件比较容易,网上有各种清理脚本可用。我喜欢的清理机制来自 Perl Monks 网站,使用一个简单的 Perl 命令以及标准的 UNIX 和 Linux col 命令(该命令将输出中的控制字符过滤出来,然后再将其作为输入),以清理 script 命令产生的输出文件。例如,要创建名为 output_file.txt 的 script 输出文件的一个干净副本(名为 output_file.txt.clean),您执行 清单 1 中所示的命令。
更多精彩
赞助商链接