web-dev-qa-db-ja.com

端末出力でANSIエスケープシーケンスを防止する

LinuxボックスでPuTTYを介して「ls-l」を実行すると、きれいできれいな色の出力が得られます。

しかし、同じようにプログラムでplinkを試してみると、あらゆる種類の制御シーケンスを取得することになり、おそらくそれらの色の値を示しています。

どういうわけか、色のこれらの余分なシーケンスを送信せず、プレーンテキストを出力するように端末オプションを設定できますか?

[00mtotal 8956
drwxr-xr-x 8 pradymn users    4096 2010-07-23 12:29 [01;34mtestsb1[00m
drwxr-xr-x 5 pradymn users    4096 2010-07-24 22:49 [01;34mtest1[00m
-rw-r--r-- 1 pradymn users 9143013 2010-07-24 23:03 [00;31mtest1.tar.gz[00m
2
Pradyumna

これはおそらく、色を表示するようにlsを設定する方法に関連しています。あなたがそれを投稿することができれば、私たちはもっと役立つかもしれません。

お気に入りのシェルプロファイルファイル(.bashrc)で以下を使用することをお勧めします:alias ls="ls --color=auto"

または、カラー出力が必要ない場合は、--color=neverを使用してlsを呼び出すことができます。

1
Rob

もう1つの方法は、コンソールとplinkの間に配置され、ANSIカラーコードをオンザフライで変換する ansicon ユーティリティを使用することです。

$ ansicon.exe plink.exe user@Host
5

次のJava正規表現(例)を使用して、ANSIエスケープシーケンスを削除できます。

\\[..;..[m]|\\[.{0,2}[m]|\\(Page \\d+\\)|\u001B\\[[K]|\u001B|\u000F
1
MisterZ

ロブの答えに追加するには:

ANSIエスケープシーケンスは、ターミナルエミュレータプログラム(または実際のハードウェアターミナル)によって解釈される必要があります。 PuTTYは、1つのプログラムでターミナルエミュレーターとSSHクライアントの両方です。

ただし、plinkは、生のバイナリデータを転送するように設計されたSSHクライアントにすぎません。 ITはANSIシーケンスを解釈せず、実行中の端末に渡すだけです。Windowsでは、端末は です。 Windowsコンソール —そしてANSIもサポートしていません。

コマンドラインからSSHを使用する場合は、CygwinバージョンのOpenSSHを試してください。 PuTTYはコマンドラインからも起動できます。

1
user1686