我已经设置了.Xresources
Alt按-时能够将终端内容打印到文件中P:
XTerm*printAttributes: 2
XTerm*printerCommand: cat - > "`mktemp --tmpdir xterm-screenshot.bin.XXXXXXXXXX`"
XTerm.VT100.translations: #override Meta <KeyPress> P: print() \n
这似乎工作正常,除了输出中的每一行都以一些转义字符和文字为前缀#5
。比较会话开始时的输出xterm
:
user^2@host:~
$
ESC#5ESC[0m
一开始的那一点正常吗?
less /tmp/xterm-screenshot.bin.*
:
ESC#5ESC[0muserESC[0;1;33m^2ESC[0m@host:ESC[0;1;34m~ESC[0m
ESC#5ESC[0m$ ESC[0m
less -R /tmp/xterm-screenshot.bin.*
:
[0muser^2@host:~
[0m$
附加信息:
$ xterm -version
XTerm(271)
$ uname -a
Linux user 3.2.0-27-generic #43-Ubuntu SMP Fri Jul 6 14:46:35 UTC 2012 i686 i686 i386 GNU/Linux
答案1
是的,因为您特别要求 xTerm 具有print()
所有属性:
XTerm*printAttributes: 2
即输出文件包含发送到 xTerm 的整个字节序列,然后您使用less
(普通,没有开关)来读文件,以便您获得终端上显示的文本版本(具有各种属性的内容)。有问题的文件是:
[me ~]$ file -b /tmp/xterm-screenshot.bin.HBsmSPRrFx
ASCII text, with CRLF line terminators, with escape sequences
您必须使用-r
( --raw-control-chars
)less
才能看法文件内容与终端上显示的方式相同:
less -r /tmp/xterm-screenshot.bin.HBsmSPRrFx
如果您不希望输出文件中包含转义序列(即,您想要一个没有图形属性的纯文本文件),则必须使用:
XTerm*printAttributes: 0
在你的~/.Xresources
。从xTerm手册:
printAttributes (class PrintAttributes)
Specifies whether to print graphic attributes along with the text. A real DEC VTxxx terminal
will print the underline, highlighting codes but your printer may not handle these. A "0"
disables the attributes. A "1" prints the normal set of attributes (bold, underline, inverse
and blink) as VT100-style control sequences. A "2" prints ANSI color attributes as well.