Die folgenden Aussagen sind wahr:
watch
führt den Befehl in einer neuen Shell aus sh
.
.bashrc
Aliase ls
als ls --color=auto
zu Farben ermöglichen.
sh
erbt oder verwendet keine bash
Aliase.
Also , wenn watch
läuft ls
, ist es nicht für Farben gefragt, es läuft einfach die gute alte Version. Sie können dies umgehen, aber - wie aditya betont - müssen Sie auch Farben aktivieren, damit watch
sie ordnungsgemäß verarbeitet werden können.
Ein Arbeitsbeispiel für ls
ist:
watch --color -- ls --color=always
Wenn Sie nicht vorbeikommen --color
, um zu sehen, sehen Sie eine Reihe hässlicher Farbcodes inline.
ls --color
wird interpretiert als ls --color=always
.
ls --color=auto
druckt keine Farbe in der Uhr. Dies deutet darauf hin, dass die Farbunterstützung vom Terminal selbst abgeleitet wird.
Um mehr über den Grund zu erfahren, können wir testen, ob die Watch Shell ein echtes Terminal für Folgendes hält :
$ bash -c '[[ -t 1 ]] && echo "real terminal"'
real terminal
$ watch -- "bash -c '[[ -t 1 ]] && echo "real terminal"'"
# ... nothing.
Ich vermute, dass einige Anwendungen dies (oder ähnliches) prüfen, um festzustellen, ob sie Farben aktivieren sollten oder nicht.