我尝试使用以下命令记录 bash 会话:
js:/var/tmp # script -aqf /var/tmp/out
在out
文件中,除了输出之外,我还看到很多垃圾。我看到的不仅仅是空格和换行,例如:
Script started on Tue Jul 14 14:17:57 2015
^[[?1034h^[[1m^[[31mjs-om:/var/tmp # ^[(B^[[m^M
^[[1m^[[31mjs:/var/tmp # ^[(B^[[m^M
^[[1m^[[31mjs:/var/tmp # ^[(B^[[m^M
^[[1m^[[31mjs:/var/tmp # ^[(B^[[m^M
^[[1m^[[31mjs:/var/tmp # ^[(B^[[m^M
^[[1m^[[31mjs:/var/tmp # ^[(B^[[mpwd^M
/var/tmp^M
^[[1m^[[31mjs:/var/tmp # ^[(B^[[m^M
^[[1m^[[31mjs:/var/tmp # ^[(B^[[m^M
^[[1m^[[31mjs:/var/tmp # ^[(B^[[m^M
^[[1m^[[31mjs:/var/tmp # ^[(B^[[m^M
^[[1m^[[31mjs:/var/tmp # ^[(B^[[mexit^M
exit^M
我认为问题出在编码上。这个问题有解决办法吗?
答案1
不,问题不在于编码。您似乎没有遵循手册页中提到的屏幕先决条件:
Certain interactive commands, such as vi(1), create garbage in the type‐
script file. Script works best with commands that do not manipulate the
screen, the results are meant to emulate a hardcopy terminal.
您拥有可能由复杂提示产生的各种内容。设置您的提示
PS1="$ "
以防止写入垃圾。
答案2
除了修复您的 之外PS1
,您还可以通过在TERM
环境变量中导出合适的值来说服应用程序不要发出这些非打印字符。规范的可能是export TERM=dumb
在会话开始时script
(或TERM=dumb script <args>
调用时)。假设您PS1
使用 来创建可移植的tput
,那么后者也可能适用于该目的。
答案3
从脚本输出中删除控制字符(包括控制台代码/颜色)似乎回答了你的问题。
首先,在清除所有转义序列的打字稿文件后使用 script + 。