Kiedy uruchamiam takie polecenie:
# systemctl status plexmediaserver
Dostaję ładnie kolorowe wydruki. Ale kiedy uruchomię następujące polecenie:
# watch -n300 --color systemctl status plexmediaserver
Czy jest jakiś sposób, aby wykonać to watch
polecenie z kolorem systemctl
? Szukałem strony podręcznika, systemctl
ale nigdzie nie widzę odniesienia do koloru.
Odpowiedzi:
man systemd
mówitzn. możesz wymusić za pomocą tego tryb koloru.
źródło
SYSTEMD_COLORS
robi więcej, niż sugeruje nazwa, ponieważ wprowadzono obsługę klikalnych linków w połowie 2018 r., Zaśmiecając dane wyjściowe niektórymi kodami specjalnymi i URL-ami adresów URL - które na szczęście można wyłączyćSYSTEMD_URLIFY=0
systemctl
wydaje się, że nie ma mechanizmu określania, kiedy należy pokolorować wydruk. Szybkim rozwiązaniem byłoby odsunięcie się,isatty(3)
aby zawsze zwracać wartość true, dlatego podstępnesystemctl
myślenie jest standardowe. Mianowicie możesz zrobić:Na
-xc -
końcugcc
polecenia mówi,gcc
aby skompilować kod C (-xc
) z stdin (-
). Reszta flag informujegcc
o utworzeniu udostępnionego pliku obiektu o nazwieisatty.so
. Zauważ, że może to zepsuć inne programy, które polegają naisatty
zwróceniu uzasadnionej wartości. Wydaje się jednak, że jest w porządku,systemctl
ponieważisatty
wydaje się być używany wyłącznie w celu ustalenia, czy powinien pokolorować swój wynik.źródło
W oparciu o odpowiedź @ KarlC , oto skrypt, który generuje, a następnie dołącza bibliotekę w czasie wykonywania:
źródło