En courant git status -sb
je vois:
Je veux watch
(à partir de procps-ng 3.3.3) un référentiel. L' --color
option est censée conserver les couleurs.
Fait intéressant, cela fonctionne avec ls
:
$ watch --color "ls --color"
Montrant:
Cependant pour git
les couleurs disparaissent:
$ watch --color "git status -sb"
Alors, pourquoi watch
montre- t -on les couleurs ls
de la git
sortie mais pas de la sortie?
git
watch-command
Drew Noakes
la source
la source
Réponses:
Les affirmations suivantes sont vraies:
watch
exécute la commande dans un nouveau shell,sh
..bashrc
aliasls
quantls --color=auto
à activer les couleurs.sh
n'hérite ni n'utilise d'bash
alias.Ainsi, lors de l'
watch
exécutionls
, il ne demande pas de couleurs, il exécute simplement l'ancienne version standard. Vous pouvez contourner cela, mais, comme le souligne Aditya, vous devez également activer les couleurswatch
pour qu'il les traite correctement.Un exemple de travail pour
ls
est:Si vous ne passez pas
--color
à regarder, vous verrez un tas de codes de couleur laid en ligne.ls --color
est interprété commels --color=always
.ls --color=auto
n'imprime pas la couleur dans la montre. Cela suggère qu'il déduit la prise en charge des couleurs depuis le terminal lui-même.Pour en savoir plus sur la raison, nous pouvons tester si le boîtier de la montre pense que c'est un vrai terminal :
Je soupçonne que certaines applications regardent cela (ou similaire) pour dire si elles doivent activer les couleurs ou non.
la source
git status -sb
, même s'il fonctionne avecls --color
.git
. La coloration est directement définie dans la configuration de git . Donc, cela ne semble pas être un problème d'alias.auto
auxquelles, comme vous l'avez correctement supposé, git évitait la sortie des couleurs. Utiliser à laalways
place a résolu ce problème. Merci beaucoup!git
utilise une valeur de configuration pour déterminer s'il faut afficher la sortie colorée ou non.Par exemple:
Cela définit le paramètre de couleur sur
auto
globalement. Enauto
mode, git déterminera s'il s'agit d'un vrai terminal avant d'envoyer des codes couleur, comme l'a suggéré Oli.Vous pouvez forcer cette valeur globale à
always
, cependant une meilleure idée peut être de l'appliquer à une commande particulière:Mettre tous ensemble:
la source
Cela fonctionne si
git
(--color
) etwatch
(-c
) sont invités à utiliser des couleurs:la source