0

我运行了这个命令

$ script -a 05112013.log
$ ls
$ Ctrl+D

我在 05112013.log 文件中看到以下内容,

Script started on Tue 05 Nov 2013 06:12:46 PM IST
^[]0;mmopuru@mmopuru:/zyme_shared/zyme_apps/zymenet/dev^G^[[?1034h[mmopuru@mmopuru dev]$ ls^M
^[[0m^[[00;33m05112013.log^[[0m   ^[[01;34mberkeleydb^[[0m  ^[[00;33mC:\nppdf32Log\debuglog.txt^[[0m  ^[[01;34mhttpd^[[0m         ^[[01;34mlib^[[0m           ^[[01;34mmemcached^[[0m  ^[[01;34mpython^[[0m      test.py      ^[[01;34mzyme_repo^[[0m^M
^[[01;34mapache-tomcat^[[0m  ^[[01;34mbin^[[0m         ^[[01;34mEGG-INFO^[[0m                    ^[[01;34mjobscheduler^[[0m  ^[[01;34mlibmemcached^[[0m  ^[[01;34mopenldap^[[0m   ^[[01;34mrepository^[[0m  ^[[01;34mzymenetwsgi^[[0m^M
^[]0;mmopuru@mmopuru:/zyme_shared/zyme_apps/zymenet/dev^G[mmopuru@mmopuru dev]$ exit^M

Script done on Tue 05 Nov 2013 06:12:51 PM IST

为什么脚本命令以 Windows 格式记录内容?意味着使用 ^M、^G^[、^[ 等字符作为换行符、标签等?

:set ff?注意:当我在vi中检查文件格式时说fileformat=unix.

4

1 回答 1

1

它不是以 Windows 格式登录,而是以原始(或非规范)格式登录。工作方式script是将自身作为终端驱动程序插入到低级别(简化)。

您通常看到的转换是由“行规”完成的。非规范终端使用由诸如vi.

看到man tcgetattr比你真正想要的更多细节。

要从中删除不可打印的字符,typescript可以试试这个,前提是你有一个sed支持 POSIX 字符类(例如现代 Linux):

sed -r 's/[^[:print:]]//' typescript > final.file
于 2013-11-05T12:59:31.150 回答