私は設定しました。.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
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.