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
エイリアスls
asls --color=auto
色を有効にします。 -
sh
bash
を継承または使用しません エイリアス。
したがって、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.
一部のアプリケーションは、色をオンにする必要があるかどうかを判断するために、それ(または同様のもの)を調べていると思われます。