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
aliasyls
jakols --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.