2016-05-20 6 views
0

を無効にする、これが私のために働いていません。私はこのような前の質問で与えられた例と同じコードを持っていますが、 "ダム"ターミナルタイプ(TelnetClient telnet =新しいTelnetClient( "ダム")は彼が他の人のためのソリューションでした)はANSI文字をフィルタリングしていませんのでたtelnetClient出力 - ANSI私は残念ながらstackoverflow.com</p> <p>に類似した質問と回答を見てきました

最終ログイン:172.20.22.244

から金5月20日10時09分21秒[01; [00メートルvivadev @ 33mteltest:; 34メートル〜[00メートル$のls lsのテスト[01; 33mteltestする@ vivadev [00メートル[01 :[01; 34m〜[00m $ cdテストテスト[01; 33mteltest @vivadev [00m:[01; 34m〜/ testing [00m $ ls

と私は読みやすいファイルが必要です。 outputStreamのエンコーディングとして何か他の解決策がありますか?

ありがとうございます。

答えて

1

従来のアプリケーションでは、(ではなく、の色を使用します)が欲しいと思うように、TERMに注意してください。しかし、ハードコーディングされたアプリケーションが数多くあります(コメントは必要ありません)。

プログラムの出力をファイルにリダイレクトすると、色の表示が抑制されることがあります。

foo >bar 

しかし、多くの(恐らく大多数の不正プログラム)はそれを無視します。これらを回避するには、sedスクリプトまたは同様のプログラムによって、またはscriptをリダイレクトまたは使用してコマンドの出力をキャプチャしてから後処理の結果をフィルタに送信する必要があります。たとえば、

#!/bin/sh 
myscript=$(mktemp) 
trap "sed -f $myscript typescript; rm -f $myscript typescript" EXIT INT QUIT HUP 
cat >$myscript <<"EOF" 
s/^[[[][<=>?]\{0,1\}[;0-9]*[@-~]//g 
xample: 
s/^[[]][^^[]*^[//g 
s/^[[]][^^[]*^[\\//g 
:loop 
s/[^^[]^[\(.\)/\1/g 
t loop 
s/ *$//g 
s/^.* //g 
s/^[[^[]//g 
/\1/g 
EOF 
script -c "$*" >/dev/null 

のようなスクリプトでこれを行うことができます。これはアプローチを示しています。この例の^[ペアのほとんどはリテラルのASCIIエスケープ文字です。選択/貼り付けできません。元のsedスクリプトは次のとおりです。script2log

スクリプトのポイントは、コマンドを正常に実行してからフィルタ結果をエコーすることです。

+0

ありがとうございます。試してみます。 –

関連する問題