GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Pourquoi les couleurs Git n'apparaissent-elles pas lors de l'utilisation de Watch ?

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 :

  • watch exécute la commande dans un nouveau shell, sh .
  • .bashrc alias ls comme ls --color=auto pour activer les couleurs.
  • sh n'hérite ni n'utilise bash alias.

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.


Ubuntu
  1. Pourquoi les instantanés de retour dans le temps semblent-ils si volumineux ?

  2. Afficher la progression de l'installation d'un package dans le terminal ?

  3. Internet lent sur Ubuntu lors de l'utilisation d'un commutateur

  4. Lors de l'utilisation de os.execlp, pourquoi `python` a besoin de `python` comme argv [0]

  5. Pourquoi mon $LD_LIBRARY_PATH est-il désactivé lors de l'utilisation de screen avec bash ?

Pourquoi n'est-il pas possible de graver un DVD multisession avec Brasero ?

Pourquoi Shotwell a-t-il inversé les positions X et Y lors de l'utilisation du recadrage ?

Utilisation de la commande Watch sous Linux

Comment :une introduction à l'utilisation de Git

Pourquoi ma construction d'Ubuntu est-elle lente lors du déplacement des fenêtres ?

Utilisation de / lors de l'utilisation d'un cd