git status -sbを実行している場合 なるほど:
watch (procps-ng 3.3.3から)リポジトリ。 --color オプションは色を維持することになっています。
興味深いことに、lsで動作します :
$ watch --color "ls --color"
表示中:
ただし、gitの場合 色が消えます:
$ watch --color "git status -sb"
では、なぜwatch lsの色を表示する ただし、gitからではありません 出力?
承認された回答:
次の記述は正しいです:
watch新しいシェルshでコマンドを実行します 。-
.bashrcエイリアスlsasls --color=auto色を有効にします。 -
shbashを継承または使用しません エイリアス。
したがって、watch lsを実行します 、色を要求するのではなく、単純な古いバージョンを実行しているだけです。これを回避することはできますが、adityaが指摘しているように、watchで色を有効にする必要もあります。 それらを適切に処理するために。
lsの実例 は:
watch --color -- ls --color=always
--colorを渡さない場合 見ると、たくさんの醜いカラーコードがインラインで表示されます。
ls --color ls --color=alwaysとして解釈されます 。
ls --color=auto しません 時計の色を印刷します。これは、端末自体からカラーサポートを推測していることを示しています。
理由の詳細については、時計のシェルが実際の端末であると見なすかどうかをテストできます。
$ bash -c '[[ -t 1 ]] && echo "real terminal"'
real terminal
$ watch -- "bash -c '[[ -t 1 ]] && echo "real terminal"'"
# ... nothing.
一部のアプリケーションは、色をオンにする必要があるかどうかを判断するために、それ(または同様のもの)を調べていると思われます。