Al ejecutar git status -sb
Veo:
Quiero watch
(de procps-ng 3.3.3) un repositorio. El --color
se supone que la opción mantiene los colores.
Curiosamente, funciona con ls
:
$ watch --color "ls --color"
Mostrando:
Sin embargo, para git
los colores desaparecen:
$ watch --color "git status -sb"
Entonces, ¿por qué watch
mostrar colores de ls
pero no de git
salida?
Respuesta aceptada:
Las siguientes afirmaciones son verdaderas:
watch
ejecuta el comando en un nuevo shell,sh
..bashrc
aliasls
comols --color=auto
para habilitar los colores.sh
no hereda ni usabash
alias.
Así que cuando watch
ejecuta ls
, no pide colores, solo ejecuta la versión antigua. Puede eludir esto pero, como señala aditya, también debe habilitar los colores en watch
para que los procese correctamente.
Un ejemplo de trabajo para ls
es:
watch --color -- ls --color=always
Si no pasa --color
para mirar, verás un montón de códigos de colores desagradables en línea.
ls --color
se interpreta como ls --color=always
.
ls --color=auto
no color de impresión en el reloj. Esto sugiere que está infiriendo la compatibilidad con el color del propio terminal.
Para obtener más información sobre el motivo, podemos probar si la carcasa del reloj cree que es un terminal real:
$ bash -c '[[ -t 1 ]] && echo "real terminal"'
real terminal
$ watch -- "bash -c '[[ -t 1 ]] && echo "real terminal"'"
# ... nothing.
Sospecho que algunas aplicaciones buscan eso (o algo similar) para saber si deben activar los colores o no.