没啥意思的站点

记录你的终端操作 ── 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控制符的文本文件,忠实地记录了你的所有操作。
现在,有了终端的详细“截图”,你就可以将得到文件发给对方,进行交流了,哈哈~

10 评论

  1. 杀一个发 ~ 学习一下 哈哈 ~

  2. 嗯,不错,终端下的屏幕录像机

  3. 太牛叉了。shell真是什么工具都有啊。

  4. 不错不错……学习了……

  5. 我一般都是先开 screen,想记录的时候,比如 compiling result,使用快捷键 Ctrl-a h 开始,再次 Ctrl-a h 结束。

  6. 我以前写过一个小东西:
    http://www.fwolf.com/tools/2007/screenlog2html.php
    转换带ANSI颜色的log文件的,
    试了一下,略微有些乱码,凑合能看。

  7. cat 一下 typescript 不就完美了?

  8. 我让一般用户登陆shell就自动开个multiuser的screen,相互交流需要看到她终端屏幕时就attach过去,也方便。

发表评论