在 UNIX 和 Linux 系统上捕获屏幕快照和程序交互: 第 1 部分,程序交互
2010-10-09 08:53:20 来源:WEB开发网清单 1. 清理 script 输出
cat output_file.txt | \
perl -pe 's/\e([^\[\]]|\[.*?[a-zA-Z]|\].*?\a)//g' |\
col -b > output_file.txt.clean
如果您经常做这类事情,可能想要创建一个小的 shell 脚本来自动化这一过程,以防在第二行键入替代的 Perl 命令时出问题。清单 2 是一个做这件事的小 shell 脚本。
清单 2. 一个用于清理 script 输出的 shell 脚本
#!/bin/bash
if [ $# -ne 2 ] ; then
echo "Usage: cleanup script-file output-file"
exit
fi
cat $1 | \
perl -pe 's/\e([^\[\]]|\[.*?[a-zA-Z]|\].*?\a)//g' |\
col -b > $2
Shell 重定向、前一节讨论的交互式 shell 命令和本节讨论的 script 命令,都是用于捕获您可以在几乎每种 UNIX 和 Linux 系统上使用的程序交互的机制。但是,一些 UNIX 系统提供附加的工具用于捕获程序交互。这些工具提供在特殊情况下有用的附加功能,下一节将会讨论。
平台特定的文本捕获实用工具
大多数 UNIX 和 Linux 系统只提供 script 命令来自动化捕获程序交互,但是 AIX 操作系统提供一个方便的实用工具,就叫做 capture,用于将特定屏幕的文本内容写到文件。在您想要展示一个运行操作屏幕的命令例子(比如文本编辑器)时,这很有帮助。尝试使用 shell 重定向或 script 命令将一个使用 vi 编辑器的例子捕获到文件,会创建一个输出文件,其中包含很多控制字符,并且基本上是难以理解的。
如果您没有在命令行指定输出将写入到的特定文件的名称,那么 AIX capture 命令会创建一个名为 screen.out 的文件。启动 capture 命令会创建一个 shell,在该 shell 中,您可以执行您想要执行的任何命令,直到屏幕显示您想要捕获的内容为止。此时,键入 Control-p 组合键,将屏幕内容写到输出文件。要终止 capture 命令,简单地键入 exit 命令即可(大多数系统上也可按 Control-d)。
使用 capture 命令时,一定要记住,直到您键入 Control-p ,它才会捕获文本,多次键入 Control-p 只会覆盖输出文件,除非您用 -a 选项启动 capture 命令,告诉它附加到输出文件,而不是覆盖输出文件。
结束语
捕获与程序的交互是很常见的任务。尽管 UNIX 和 Linux shell 提供内置的机制用于将交互的特定部分写到文本文件,但是使用交互式 shell 或 script 命令会产生单个提供程序交互的完整连续记录的输出文件。产生这些输出文件(以及在必要时清理它们)的机制对于几乎所有UNIX 或 Linux 作者、开发人员或系统管理员都是有用的工具。
本系列的下一篇文章将讨论用于在 UNIX 和 Linux 系统上捕获显示整个屏幕或特定窗口的图像的标准工具。还要解释如何将这些图像转换成各种标准图形格式。
更多精彩
赞助商链接