Wenn ich einen Befehl wie diesen ausführe:
# systemctl status plexmediaserver
Ich bekomme eine schön gefärbte Ausgabe. Aber wenn ich den folgenden Befehl ausführen:
# watch -n300 --color systemctl status plexmediaserver
Gibt es eine Möglichkeit, wie ich diesen watch
Befehl mit Farbe ausführen kann systemctl
? Ich habe die Manpage nachgesehen, sehe systemctl
aber nirgendwo einen Farbbezug.
Antworten:
man systemd
sagtDas heißt, Sie können den Farbmodus damit erzwingen.
quelle
SYSTEMD_COLORS
tut mehr als der Name bekommt, weil Mitte 2018 die Unterstützung für anklickbare Links eingeführt schon sagt, mit einigem Escape - Codes Littering Ausgang und urlified URLs - die zum Glück mit werden können ausgeschaltetSYSTEMD_URLIFY=0
systemctl
scheint nicht über einen Mechanismus zu verfügen, mit dem angegeben werden kann, wann die Ausgabe eingefärbt werden soll. Eine schnelle Lösung wäre, zu shimen,isatty(3)
um immer wahr zurückzukehren, und so zu täuschen,systemctl
dass stdout interaktiv ist. Sie könnten nämlich tun:Am
-xc -
Ende desgcc
Befehls wird angegebengcc
, dass C-Code (-xc
) aus stdin (-
) kompiliert werden soll . Die restlichen Flags gebengcc
an, dass eine gemeinsam genutzte Objektdatei mit dem Namen erstellt werden sollisatty.so
. Beachten Sie, dass dies sehr gut andere Programme beschädigen kann, die darauf angewiesen sindisatty
, einen legitimen Wert zurückzugeben. Es scheint jedoch in Ordnung zu sein,systemctl
da esisatty
anscheinend nur dazu verwendet wird, um zu bestimmen, ob es seine Ausgabe färben soll.quelle
Basierend auf der Antwort von @ KarlC ist hier ein Skript, das die Bibliothek zur Laufzeit generiert und dann einschließt:
quelle