Quando si esegue git status -sb
Vedo:
Voglio watch
(da procps-ng 3.3.3) un repository. Il --color
l'opzione dovrebbe mantenere i colori.
È interessante notare che funziona con ls
:
$ watch --color "ls --color"
Mostrando:
Tuttavia per git
i colori scompaiono:
$ watch --color "git status -sb"
Allora, perché watch
mostra i colori da ls
ma non da git
uscita?
Risposta accettata:
Le seguenti affermazioni sono vere:
watch
esegue il comando in una nuova shell,sh
..bashrc
aliasls
comels --color=auto
per abilitare i colori.sh
non eredita né usabash
alias.
Quindi quando watch
esegue ls
, non sta chiedendo i colori, sta solo eseguendo la semplice vecchia versione. Puoi aggirare questo problema ma, come sottolinea aditya, devi anche abilitare i colori su watch
affinché li elabori correttamente.
Un esempio funzionante per ls
è:
watch --color -- ls --color=always
Se non superi --color
da guardare, vedrai un sacco di brutti codici colore in linea.
ls --color
viene interpretato come ls --color=always
.
ls --color=auto
non colore di stampa nell'orologio. Ciò suggerisce che stia deducendo il supporto del colore dal terminale stesso.
Per ulteriori informazioni sul motivo, possiamo verificare se la shell dell'orologio pensa che sia un vero terminale:
$ bash -c '[[ -t 1 ]] && echo "real terminal"'
real terminal
$ watch -- "bash -c '[[ -t 1 ]] && echo "real terminal"'"
# ... nothing.
Sospetto che alcune applicazioni stiano guardando quello (o simili) per dire se devono attivare i colori o meno.