GNU/Linux >> Znalost Linux >  >> Ubuntu

Proč se při používání Watch nezobrazují barvy Git?

Při spuštění git status -sb Vidím:

Chci watch (z procps-ng 3.3.3) úložiště. --color možnost má zachovat barvy.

Zajímavé je, že funguje s ls :

$ watch --color "ls --color"

Zobrazuje se:

Nicméně pro git barvy zmizí:

$ watch --color "git status -sb"

Proč tedy watch zobrazit barvy z ls ale ne z git výstup?

Přijatá odpověď:

Následující tvrzení jsou pravdivá:

  • watch spustí příkaz v novém prostředí sh .
  • .bashrc aliasy ls jako ls --color=auto pro aktivaci barev.
  • sh nedědí ani nepoužívá bash aliasy.

Takže když watch spustí ls , nepožaduje barvy, pouze spouští obyčejnou starou verzi. Můžete to obejít, ale – jak zdůrazňuje aditya – musíte také povolit barvy na watch aby je mohl správně zpracovat.

Funkční příklad pro ls je:

watch --color -- ls --color=always

Pokud nezadáte --color při sledování uvidíte spoustu ošklivých barevných kódů.

ls --color je interpretován jako ls --color=always .

ls --color=auto není barva tisku v hodinkách. To naznačuje, že podporu barev odvozuje od samotného terminálu.

Chcete-li více o důvodu, můžeme vyzkoušet, zda si shell hodinek myslí, že je to skutečný terminál:

$ bash -c '[[ -t 1 ]] && echo "real terminal"'
real terminal

$ watch -- "bash -c '[[ -t 1 ]] && echo "real terminal"'"
# ... nothing.

Mám podezření, že některé aplikace se na to (nebo podobně) dívají, aby zjistily, zda by měly zapnout barvy nebo ne.


Ubuntu
  1. Proč se při používání Vlc spořič obrazovky neustále probouzí?

  2. Automatické dokončování Git?

  3. Proč se při použití uvozovek zobrazuje jedno zpětné lomítko?

  1. Proč se snímky Back In Time zdají být tak velké?

  2. Chyba při použití pomocníka pověření Git se svazkem klíčů gnome jako Sudo

  3. Při použití git přeskočte výzvu k uživatelskému jménu

  1. Proč mohu vidět výstup procesů na pozadí?

  2. Zobrazit průběh instalace balíčku v terminálu?

  3. Použití / při použití cd