たとえば、プロセスの色で区切られた出力をパイプしたい場合があります。 grep... しかし、別のプロセスにパイプする場合、たとえば。 sed、カラーコードがありません...
このコードをそのまま維持する方法はありますか?
以下は、カラー出力が欠落している例です。
echo barney | grep barney | sed -n 1,$\ p
ベストアンサー1
カラー出力を生成する多くのプログラムはTTYに書き込んでいるかどうかを検出し、そうでない場合はカラーをオフにします。これは、テキストだけをキャプチャしたい場合は、カラーコードが面倒で自動的に「正しいことをする」ためです。
これらのプログラムでカラー出力をキャプチャする最も簡単な方法は、TTYに接続していなくてもカラーを書き込むように指示することです。このオプションがあるかどうかを確認するには、プログラムのマニュアルを読んでください。 (たとえば、オプションがgrep
あります--color=always
。)
また、使用することができますexpect
スクリプトunbuffer
次のように擬似ttyを作成します。
echo barney | unbuffer grep barney | sed -n 1,$\ p