答案1
如果您结帐:
man script | grep -i bugs -A 2
您可以看到:
脚本将所有内容(包括换行符和退格符)放入日志文件中。这不是新手用户所期望的。
我想到的是将tr
和结合起来sed
以达到我们想要的效果。
大多数字符都表示颜色,为了删除大多数字符,我们可以使用此sed
命令这里:
sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g"
但这还不够……因为正如我们在脚本中看到的,man
还有其他不可打印的字符需要删除。要删除这些字符,我们只需使用:
tr -dc '[[:print:]]\n'
现在我们就快到了,我在测试中遇到的另一个问题是提示被重复了两次,因此要删除script
以开头的dump
和TERM
的值TERM=dump
。
最后结果:
捕获命令:
TERM=dump script my_output
删除不需要的字符:
sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g" my_output | tr -dc '[[:print:]]\n' > new_output
对于问题的第二部分,输出文件只是一个文本文件,因此我们无法更改其中特定行的字体或大小,但是您的输出包含提示,因此您会知道哪一行是命令,哪一行是输出。
答案2
我们需要向旧的 /usr/bin/script 命令添加三个选项:
man script
通过添加不输出退格键的选项来修复上面提到的 BUG,并记录在案。- 添加 HTML 输出选项。
- 添加 MarkDown 输出选项。