最近、コマンドラインツールでは、ログ出力に派手なANSI色を使用する傾向があります(たとえば、NPMと多くのnodejsベースのツール、rvm、docker、およびその他のいくつかの「モダン」ツール)。
これにより、画面(*)で読むのは便利ですが、出力をログファイルにパイプしたり、さまざまなリモート実行ツールやWebベースの監視ソリューションのようにANSIを適切に処理しないトランスポートを介して送信したりする場合は、あまり良くありません。より成熟したツールの多くは、少なくとも出力がTTYでなく、色が無効になっていることを検出する良識を持っていましたが、これらの新しい「ユーザーフレンドリーな」CLIではできませんでした。これにより、パイプでANSI色を取り除こうとしましたさらに別のプロセスによる出力。
出力をsed-ingするs/\x1B\[[0-9]*\w//g
ことは仕事を成し遂げたようですが、よりクリーンなアプローチは正規表現を私のすべてのスクリプトに貼り付けるだけですか?
(*)少なくとも、ツールが暗い背景の端末で暗い赤でエラーを表示しようとするまで。
2
参照:unix.stackexchange.com/questions/14684/... - unix.stackexchange.com/questions/111899/... stackoverflow.com/questions/17998978/... superuser.com/questions/380772/... - 4+質問間のオーバー3つのサイトにまたがる3年のスパンでは、正規表現の置換/削除を行うツールを使用するための答えしか得られていません。何より良いものはないと思います。
—
Zoredache
議論の対象と思われるのは、どの正規表現がどの状況に最適かということだけです。
—
Zoredache 2015年
is there a cleaner approach then just copy pasting regular expressions into all of my scripts?
-クリーンアップフィルターを '/ usr / local / bin / stripttycolor.sh`などのファイルに保存しますか?そうすれば、正規表現を単一の場所に制限できますか?
出力をファイルに書き込むことがわかっている場合、(少なくともNPMの場合)最も簡単なことは、
—
Moshe Katz
--no-color
フラグを指定して実行することです。他の多くのコマンドにも同様のフラグがあります。
@MosheKatz:残念ながら、たとえばすべてのコマンドが実行できるわけではありません
—
ガス、2015年
bower
。