この場合、具体的には、別のコマンドにパイプするときにgit status -s
の色を保持しようとしています。
一部のgitコマンド(たとえばdiff
)やgrep
などの他のコマンドにはオプション--color=always
がありますが、git status
にはありません。
コマンドの出力をパイプまたはキャプチャして、xtermシェルに出力していると思わせて、色が自動的に無効にならないようにする方法はありますか?
これは、例としてscript
の色付き出力を使用したls
スニペットです(Mac OS X 10.6の場合)。
# 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"
これらのカラーコードを出力するほとんどのコマンドは、stdout/stderrがttyであるかどうかを明示的にチェックします( isatty
関数を使用)。
カラーコードを保持したい場合は、screen
やダイレクトロガーscript
などのターミナルエミュレーター内で実行して、出力をファイルに保存できます。