回答:
カラー出力を生成する多くのプログラムは、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