37

重複の可能性:
シェルリダイレクトを介して色付きの出力をキャプチャできますか?

設定

git status -sこの場合、具体的には、別のコマンドにパイプするときに色を保持しようとしています。

diffたとえば、一部のgitコマンドや、のような他のコマンドにgrepはオプション--color=alwaysがありますが、git statusありません。

質問

コマンドの出力をパイプまたはキャプチャして、xtermシェルに出力していると見なして、色が自動的に無効にならないようにする方法はありますか?

4

2 に答える 2

30

これは、例としての色付きの出力を使用したscriptスニペットです(Mac OS X 10.6の場合)。ls

# no colored ls output if stdout is a pipe (and not a tty)
ls -G /
ls -G / | cat
script -q /dev/null ls -G / | tr -d '\r' | cat

# write output of script command to a variable
var="$(script -q /dev/null ls -G / | tr -d '\r' | cat)"
echo "$var"
于 2011-10-04T11:02:26.270 に答える
6

これらのカラーコードを出力するほとんどのコマンドは、stdout / stderrがttyであるかどうかを明示的にチェックします(isatty関数を使用)。

カラーコードを保持したい場合は、screenまたはダイレクトロガーなどのターミナルエミュレータ内で実行してscript、出力をファイルに保存できます。

于 2011-10-03T22:31:06.323 に答える