Caracteres extras na impressora XTermCommand output

2

Eu configurei .Xresources para poder imprimir o conteúdo do terminal em um arquivo ao pressionar Alt - P :

XTerm*printAttributes: 2
XTerm*printerCommand: cat - > "'mktemp --tmpdir xterm-screenshot.bin.XXXXXXXXXX'"
XTerm.VT100.translations: #override Meta <KeyPress> P: print() \n

Isto parece funcionar bem, exceto que cada linha na saída é prefixada por alguns caracteres de escape e o literal #5 . Compare a saída no início da sessão xterm :

user^2@host:~
$ 

Isso é ESC#5ESC[0m bit no início normal?

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$

Informação adicional:

$ 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
    
por l0b0 21.08.2012 / 14:32

1 resposta

3

Sim, desde que você solicitou especificamente o xTerm para print() com todos os atributos:

XTerm*printAttributes: 2

i.e. o arquivo de saída contém toda a seqüência de bytes enviados ao xTerm e, em seguida, você está usando less (simples, sem alternar) para ler o arquivo, para obter a versão em texto do que apareceu no terminal (coisas com todos os tipos de atributos). O arquivo em questão é:

[me ~]$ file -b /tmp/xterm-screenshot.bin.HBsmSPRrFx
ASCII text, with CRLF line terminators, with escape sequences

Você terá que usar -r ( --raw-control-chars ) com less para ver o conteúdo do arquivo da mesma forma que apareceu no terminal:

less -r /tmp/xterm-screenshot.bin.HBsmSPRrFx

Se você não quiser as seqüências de escape no seu arquivo de saída (ou seja, você quer um arquivo de texto sem atributos gráficos), você tem que usar:

XTerm*printAttributes: 0

no seu ~/.Xresources . Do manual do 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.
    
por 01.10.2012 / 23:31

Tags