Lors de l'exécution de git status -sb Je vois :

Je veux watch (à partir de procps-ng 3.3.3) un référentiel. Le --color l'option est censée conserver les couleurs.
Fait intéressant, cela fonctionne avec ls :
$ watch --color "ls --color"
Affichage :

Cependant pour git les couleurs disparaissent :
$ watch --color "git status -sb"

Alors, pourquoi watch afficher les couleurs de ls mais pas depuis git sortie ?
Réponse acceptée :
Les affirmations suivantes sont vraies :
watchexécute la commande dans un nouveau shell,sh..bashrcaliaslscommels --color=autopour activer les couleurs.shn'hérite ni n'utilisebashalias.
Alors, quand watch exécute ls , il ne demande pas de couleurs, il exécute simplement l'ancienne version. Vous pouvez contourner cela mais, comme le souligne Aditya, vous devez également activer les couleurs sur watch pour qu'il les traite correctement.
Un exemple de travail pour ls est :
watch --color -- ls --color=always
Si vous ne passez pas --color à regarder, vous verrez un tas de codes de couleur laids en ligne.
ls --color est interprété comme ls --color=always .
ls --color=auto pas couleur d'impression dans la montre. Cela suggère qu'il déduit la prise en charge des couleurs à partir du terminal lui-même.
Pour en savoir plus sur la raison, nous pouvons tester si la coque de la montre pense que c'est un vrai terminal :
$ bash -c '[[ -t 1 ]] && echo "real terminal"'
real terminal
$ watch -- "bash -c '[[ -t 1 ]] && echo "real terminal"'"
# ... nothing.
Je soupçonne que certaines applications regardent cela (ou similaire) pour dire si elles doivent activer les couleurs ou non.