Ich habe die Standardeinstellung/etc/update-motd.d/00-header
bearbeitet und einige Farben hinzugefügt, um die Lesbarkeit zu verbessern:
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)"
Ich kann diese Codezeile problemlos in einem Terminal ausführen, aber wenn ich 00-header
diese Informationen bearbeite , werden die Escape-Codes im Klartext ausgegeben:
Welcome to \e[1;36mUbuntu 13.10\e[0m \e[2m(GNU/Linux 3.11.0-23-generic i686)\e[0m
Wie kann ich der Nachricht des Tages einen Farbtupfer hinzufügen?
pico
ich die vorhandene Codezeile durch die erste Codezeile ersetzt, die ich in meinem Beispiel angegeben habe. Das Problem ist, dass der MOTD-Parser dann die\e
und die nachfolgenden Zeichen als Klartext statt als Sonderzeichen behandelt.Antworten:
Angenommen, Sie arbeiten mit Ubuntu - das Dash zum Ausführen von Systemskripten verwendet:
Diese Datei
/etc/update-motd.d/00-header
wird von ausgeführt/bin/dash
(nicht/bin/bash
), was ziemlich minimalistisch (und schnell) ist -es scheint, dass das "\ e" an dieser Stelle nicht unterstützt wird - verwenden Sie stattdessen "\ 033" .
Es ist unterschiedlich, wann Escape-Codes erweitert werden.
quelle
Unter Debian / Ubuntu
motd
ist das konfiguriert in/etc/pam.d/sshd
:was bedeutet, dass das System nach erfolgreicher Anmeldung ungefähr so läuft:
Wo
/etc/motd
ist der statische Teil (nur gedruckt, nicht bezogen).Debian 9 / Ubuntu 16.04 :
Zur Generierung des dynamischen Teils
run-parts
wird für das/etc/update-motd.d
Verzeichnis verwendet:Für etwas besser lesbaren Code können Sie verwenden
tput setaf {color number}
. Beachten Sie, dass wir zur Erhaltung der Farben eineTERM
Variable setzen müssen.Speichern Sie die Datei als zB
/etc/update-motd.d/10-uname
und stellen Sie sicher, dass es ausführbar ist:
Grundfarben sind nummeriert:
Der obige Code generiert:
Je nach Geschmack können Sie mit
lolcat
oder Überschriften von mehr Farben erzeugenfiglet
. Die generierte Ausgabe verwendet die Standard-Bash-Syntax:Debian 8 / Ubuntu 14.04
Der dynamische Teil wird aktualisiert, indem
/etc/init.d/motd start
Folgendes ausgeführt wird:quelle