回答:
カラー出力を生成する多くのプログラムは、TTYに書き込んでいるかどうかを検出し、そうでない場合は色をオフにします。これは、テキストをキャプチャするだけの場合、カラーコードは迷惑なため、自動的に「正しいことをしよう」とするためです。
そのようなプログラムからカラー出力をキャプチャする最も簡単な方法は、TTYに接続されていない場合でもカラーを書き込むように指示することです。そのオプションがあるかどうかを確認するには、プログラムのドキュメントを読む必要があります。(たとえば、オプションgrep
があり--color=always
ます。)
このexpect
スクリプトunbuffer
を使用して、次のような擬似ttyを作成することもできます。
echo barney | unbuffer grep barney | sed -n 1,$\ p
unbuffer
情報のおかげで、シェルの出力のようにIRCボットの出力に役立ちます。
わたしにはできる ;-!(現在のMingW環境で)
echo barney | grep --color=always barney | sed -n '1,$p'
**barney**
#barneyは赤いテキストとして表示されます
$ grep --version
GNU grep 2.5.4
$ sed --version
GNU sed version 4.2.1
tree
is colorized a-la dircolors if the LS_COLORS environment variable is set and output is to tty
...多分(?)パイプをだましてTTYに出力していると思わせる方法があります。 。
man tree
それはあまりにも同様のオプションを持っている...、-C
...おそらくそれは、プログラムのための共通の特徴は、出力カラーエスケープコード...
less
色付きテキスト入力を受け付けることができることを発見しました(nice :) ... eg:tree -C ~/ |less -R
またはls -lR --color=always . |less -R