XTerm プリンターコマンド出力の追加文字

XTerm プリンターコマンド出力の追加文字

私は設定しました。.XresourcesAlt- を押すと、端末の内容をファイルに印刷できます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

print()はい、xTermがすべての属性を持つように具体的に要求したためです。

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.

関連情報