I am LAZY bones? AN ancient AND boring SITE

2009年 12月 09日 的归档

记录你的终端操作 ── script

不知广大linuxer有没有这样的经历:你要给别人演示一个终端下的操作过程,或者遇到什么难题需要求助别人,想把终端的操作过程(输入)及输出都记录下来。
这时候,如果过程不是很长,一屏以内的话一般可以选择直接截图;如果只是一个命令的输出,可以用重定向将标准输出(和/或 标准错误)直接定向到文件。
但是如果这个过程,既不是很短,比如输入和输出加起来有上万行;又不是一个命令能搞定的,该怎么办呢?将terminal的缓冲区定义地很大,再选择/复制/粘帖显然不是个好办法。
这时候,script就派上用场了,在终端里输入script,表面上只是打印了一行“Script started, file is typescript”的文字,但是其实,现在已经新开了一个session了,从此刻开始,任何你的输入和程序的输出都将被如实地记录到当前目录下的 typescript 文件里,直到你打exit退出这个session。退出以后,你可以用任何文本编辑器打开这个 typescript 文件,不过由于这个文件将所有的ANSI控制符都记录进去了,所以,如果你的PS1有彩色的,或者有执行ls之类的输出彩色信息的命令的时候,直接用文本编辑器看到的输出会有点乱,不过这样的好处是,如果你 cat typescript 的话,所有的颜色都也可以恢复了。另外,如果你想去掉颜色的话,可以执行

cat typescript | sed 's/\x1b[[0-9;]*.//g' > nocolor

这个命令可以基本把颜色代码去掉。

另外,还有一个办法也可以完成此项工作,就是使用 screen 的时候,加上 -L 参数,会在当然目录生成一个 screenlog.0 的文本文件,同样,这也是一个带ANSI控制符的文本文件,忠实地记录了你的所有操作。
现在,有了终端的详细“截图”,你就可以将得到文件发给对方,进行交流了,哈哈~