Beim Ausführen von git status -sb
Ich sehe:
Ich möchte watch
(ab procps-ng 3.3.3) ein Repository. Die --color
Option soll Farben behalten.
Interessanterweise funktioniert es mit ls
:
$ watch --color "ls --color"
Anzeigen:
Allerdings für git
die Farben verschwinden:
$ watch --color "git status -sb"
Also, warum watch
Farben von ls
anzeigen aber nicht von git
Ausgabe?
Akzeptierte Antwort:
Die folgenden Aussagen sind wahr:
watch
führt den Befehl in einer neuen Shell aus,sh
..bashrc
aliasls
alsls --color=auto
um Farben zu aktivieren.sh
erbt oder verwendetbash
nicht Aliasse.
Also beim watch
führt ls
aus , es fragt nicht nach Farben, es läuft nur die einfache alte Version. Sie können dies umgehen, aber – wie aditya betont – müssen Sie auch Farben auf watch
aktivieren damit es sie richtig verarbeiten kann.
Ein funktionierendes Beispiel für ls
ist:
watch --color -- ls --color=always
Wenn Sie --color
nicht übergeben Zum Anschauen sehen Sie eine Reihe hässlicher Farbcodes.
ls --color
wird als ls --color=always
interpretiert .
ls --color=auto
nicht Druckfarbe in der Uhr. Dies deutet darauf hin, dass die Farbunterstützung vom Terminal selbst abgeleitet wird.
Um mehr über den Grund dafür zu erfahren, können wir testen, ob die Watch-Shell denkt, dass es sich um ein echtes Terminal handelt:
$ bash -c '[[ -t 1 ]] && echo "real terminal"'
real terminal
$ watch -- "bash -c '[[ -t 1 ]] && echo "real terminal"'"
# ... nothing.
Ich vermute, dass einige Anwendungen darauf (oder ähnliches) achten, um festzustellen, ob sie Farben aktivieren sollen oder nicht.