Zredagowałem domyślną/etc/update-motd.d/00-header
, dodając trochę koloru, aby ułatwić czytanie:
printf "Welcome to \e[1;34m%s\e[0m \e[2m(%s %s %s)\e[0m\n" "$DISTRIB_DESCRIPTION" "$(uname -o)" "$(uname -r)" "$(uname -m)"
Mogę dobrze uruchomić ten wiersz kodu w terminalu, ale kiedy edytuję 00-header
z tymi informacjami, otrzymuję kody ucieczki wydrukowane w postaci zwykłego tekstu:
Welcome to \e[1;36mUbuntu 13.10\e[0m \e[2m(GNU/Linux 3.11.0-23-generic i686)\e[0m
Jak mogę dodać odrobinę koloru do wiadomości dnia?
pico
zastąpiłem istniejący wiersz kodu pierwszym wierszem kodu, który zawarłem w moim przykładzie. Problem polega na tym, że parser MOTD traktował następnie\e
i kolejne znaki jako zwykły tekst zamiast jako znaki specjalne.Odpowiedzi:
Zakładając, że korzystasz z systemu Ubuntu - który używa myślnika do uruchamiania skryptów systemowych:
Plik ten
/etc/update-motd.d/00-header
jest wykonywany przez/bin/dash
(nie/bin/bash
), co jest dość minimalistyczne (i szybkie) -wydaje się, że nie obsługuje „\ e” w tym miejscu - zamiast tego należy użyć „\ 033” .
Różni się to, kiedy należy rozwinąć kody ucieczki.
źródło
W systemie Debian / Ubuntu
motd
konfiguracja odbywa się w/etc/pam.d/sshd
:co oznacza, że po udanym zalogowaniu system będzie działał jak:
gdzie
/etc/motd
jest część statyczna (tylko drukowana, nie pochodzi).Debian 9 / Ubuntu 16.04 :
Do wygenerowania części dynamicznej
run-parts
służy/etc/update-motd.d
katalog:Aby uzyskać nieco bardziej czytelny kod, możesz użyć
tput setaf {color number}
. Pamiętaj, że aby zachować kolory, musimy ustawićTERM
zmienną.zapisz plik jako np
/etc/update-motd.d/10-uname
i upewnij się, że jest wykonywalny:
Podstawowe kolory są ponumerowane:
Powyższy kod generuje:
W zależności od upodobań możesz uzyskać bardziej kolorowe wydruki za pomocą
lolcat
lub nagłówkówfiglet
. Wygenerowane dane wyjściowe używają standardowej składni bash:Debian 8 / Ubuntu 14.04
Część dynamiczna jest aktualizowana za pomocą
/etc/init.d/motd start
tego, który wykonuje następujące czynności:źródło