脚本命令以Windows格式写入内容

时间:2013-11-05 12:54:57

标签: bash shell unix

我跑了这个命令

$ 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 ^ [,^ [等字符换行,标记等?

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

1 个答案:

答案 0 :(得分:1)

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

您经常看到的转化是由“线路规则”完成的。非规范终端使用由vi等程序使用。

请参阅man tcgetattr了解更多详情,而不是您真正想要的。

要从typescript中删除不可打印的字符,您可以尝试这样做,提供您有sed支持POSIX字符类(例如现代Linux):

sed -r 's/[^[:print:]]//' typescript > final.file