Sie können Ihrem Linux-Terminal Farbe hinzufügen, indem Sie spezielle ANSI-Codierungseinstellungen verwenden, entweder dynamisch in einem Terminalbefehl oder in Konfigurationsdateien, oder Sie können fertige Designs in Ihrem Terminalemulator verwenden. In jedem Fall ist der nostalgische grüne oder gelbe Text auf einem schwarzen Bildschirm völlig optional. Dieser Artikel zeigt, wie Sie Linux so farbenfroh (oder monochromatisch) gestalten können, wie Sie möchten.
Terminalfähigkeiten
Moderne Systeme sind normalerweise standardmäßig auf mindestens xterm-256color eingestellt, aber wenn Sie erfolglos versuchen, Ihrem Terminal Farbe hinzuzufügen, sollten Sie Ihre TERM-Einstellung überprüfen.
Historisch gesehen waren Unix-Terminals buchstäblich das:physische Punkte am buchstäblichen Endpunkt (Terminierung) eines gemeinsam genutzten Computersystems, wo Benutzer Befehle eingeben konnten. Sie waren einzigartig gegenüber den Teletype-Maschinen (weshalb wir heute noch /dev/tty-Geräte in Linux haben), die oft verwendet wurden, um Befehle aus der Ferne auszugeben. Die Terminals hatten eingebaute CRT-Monitore, sodass die Benutzer an einem Terminal in ihrem Büro sitzen und direkt mit dem Mainframe interagieren konnten. CRT-Monitore waren teuer – sowohl in der Herstellung als auch in der Steuerung; Es war einfacher, einen Computer rohen ASCII-Text ausspucken zu lassen, als sich Gedanken über Anti-Aliasing und andere Feinheiten zu machen, die moderne Computeristen für selbstverständlich halten. Die technologischen Entwicklungen gingen jedoch schon damals schnell voran, und es wurde schnell deutlich, dass bei der Entwicklung neuer Videoanzeigeterminals neue Funktionen benötigt wurden, die optional verfügbar sein sollten.
Beispielsweise unterstützte der schicke neue VT100, der 1978 auf den Markt kam, ANSI-Farben. Wenn also ein Benutzer den Terminaltyp als vt100 identifizierte, konnte ein Computer eine Farbausgabe liefern, während ein einfaches serielles Gerät möglicherweise keine solche Option hatte. Das gleiche Prinzip gilt heute und wird durch die Umgebungsvariable TERM gesetzt. Sie können Ihre TERM-Definition mit echo überprüfen :
$ echo $TERM
xterm-256color
Weitere Linux-Ressourcen
- Spickzettel für Linux-Befehle
- Spickzettel für fortgeschrittene Linux-Befehle
- Kostenloser Online-Kurs:RHEL Technical Overview
- Spickzettel für Linux-Netzwerke
- SELinux-Spickzettel
- Spickzettel für allgemeine Linux-Befehle
- Was sind Linux-Container?
- Unsere neuesten Linux-Artikel
Die veraltete (aber auf manchen Systemen im Interesse der Abwärtskompatibilität noch gepflegte) Datei /etc/termcap definierte die Fähigkeiten von Terminals und Druckern. Die moderne Version davon ist terminfo, die sich je nach Distribution entweder in /etc oder /usr/share befindet. Diese Dateien listen Funktionen auf, die in verschiedenen Arten von Terminals verfügbar sind, von denen viele durch historische Hardware definiert sind:Es gibt Definitionen für vt100 bis vt220 sowie für moderne Software-Emulatoren wie xterm und Xfce. Der meisten Software ist es egal, welchen Terminaltyp Sie verwenden; In seltenen Fällen erhalten Sie möglicherweise eine Warnung oder einen Fehler über einen falschen Terminaltyp, wenn Sie sich bei einem Server anmelden, der nach kompatiblen Funktionen sucht. Wenn Ihr Terminal auf ein Profil mit sehr wenigen Funktionen eingestellt ist, Sie aber wissen, dass der von Ihnen verwendete Emulator mehr kann, können Sie Ihre Einstellung ändern, indem Sie die Umgebungsvariable TERM definieren. Sie können dies tun, indem Sie die TERM-Variable in Ihre ~/.bashrc-Konfigurationsdatei exportieren:
export TERM=xterm-256color
Speichern Sie die Datei und laden Sie Ihre Einstellungen neu:
$ source ~/.bashrc
ANSI-Farbcodes
Moderne Terminals haben ANSI-Escape-Sequenzen für "Meta"-Funktionen geerbt. Dies sind spezielle Zeichenfolgen, die ein Terminal als Aktionen statt als Zeichen interpretiert. Diese Sequenz löscht beispielsweise den Bildschirm bis zur nächsten Eingabeaufforderung:
$ printf `\033[2J`
Es löscht nicht Ihren Verlauf; es löscht nur den Bildschirm in Ihrem Terminal-Emulator, also ist es eine sichere und demonstrative ANSI-Escape-Sequenz.
ANSI hat auch Sequenzen, um die Farbe Ihres Terminals einzustellen. Wenn Sie beispielsweise diesen Code eingeben, wird der nachfolgende Text grün:
$ printf '\033[32m'
Solange Sie Farben genauso sehen wie Ihr Computer, können Sie Farben verwenden, um sich daran zu erinnern, bei welchem System Sie angemeldet sind. Wenn Sie beispielsweise regelmäßig SSH-Verbindungen zu Ihrem Server herstellen, können Sie Ihre Server-Eingabeaufforderung auf Grün setzen, damit Sie sie auf einen Blick von Ihrer lokalen Eingabeaufforderung unterscheiden können. Verwenden Sie für eine grüne Eingabeaufforderung den ANSI-Code für Grün vor Ihrem Eingabeaufforderungszeichen und beenden Sie ihn mit dem Code, der Ihre normale Standardfarbe darstellt:
export PS1=`printf "\033[32m$ \033[39m"`
Vordergrund und Hintergrund
Sie sind nicht darauf beschränkt, die Farbe Ihres Textes festzulegen. Mit ANSI-Codes können Sie die Hintergrundfarbe Ihres Textes steuern und einige rudimentäre Stylings vornehmen.
Zum Beispiel mit \033[4m , können Sie Text unterstreichen lassen, oder mit \033[5m Sie können es so einstellen, dass es blinkt. Das mag zunächst albern erscheinen – weil Sie Ihr Terminal wahrscheinlich nicht so einstellen werden, dass es den ganzen Tag Text unterstreicht und blinkt –, aber es kann für ausgewählte Funktionen nützlich sein. Beispielsweise könnten Sie einen dringenden Fehler, der von einem Shell-Skript erzeugt wird, blinken lassen (als Warnung für Ihren Benutzer), oder Sie könnten eine URL unterstreichen.
Zu Ihrer Information finden Sie hier die Farbcodes für Vorder- und Hintergrund. Vordergrundfarben liegen im Bereich 30, Hintergrundfarben im Bereich 40:
Farbe | Vordergrund | Hintergrund |
---|---|---|
Schwarz | \033[30m | \033[40m |
Rot | \033[31m | \033[41m |
Grün | \033[32m | \033[42m |
Orange | \033[33m | \033[43m |
Blau | \033[34m | \033[44m |
Magenta | \033[35m | \033[45m |
Cyan | \033[36m | \033[46m |
Hellgrau | \033[37m | \033[47m |
Fallback zum Standard der Distribution | \033[39m | \033[49m |
Für den Hintergrund stehen einige zusätzliche Farben zur Verfügung:
Farbe | Hintergrund |
---|---|
Dunkelgrau | \033[100m |
Hellrot | \033[101m |
Hellgrün | \033[102m |
Gelb | \033[103m |
Hellblau | \033[104m |
Helllila | \033[105m |
Blaugrün | \033[106m |
Weiß | \033[107m |
Permanenz
Das Festlegen von Farben in Ihrer Terminalsitzung ist nur vorübergehend und relativ bedingungslos. Manchmal hält der Effekt einige Zeilen an; Das liegt daran, dass diese Methode zum Festlegen von Farben auf einer printf-Anweisung beruht, um einen Modus festzulegen, der nur so lange besteht, bis etwas anderes ihn überschreibt.
Die Art und Weise, wie ein Terminalemulator normalerweise Anweisungen darüber erhält, welche Farben zu verwenden sind, stammt von den Einstellungen der Umgebungsvariablen LS_COLORS, die wiederum von den Einstellungen von dircolors gefüllt wird. Sie können Ihre aktuellen Einstellungen mit einer Echo-Anweisung anzeigen:
$ echo $LS_COLORS
rs=0:di=38;5;33:ln=38;5;51:mh=00:pi=40;
38;5;11:so=38;5;13:do=38;5;5:bd=48;5;
232;38;5;11:cd=48;5;232;38;5;3:or=48;
5;232;38;5;9:mi=01;05;37;41:su=48;5;
196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;
196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;
[...]
Oder Sie können dircolors direkt verwenden:
$ dircolors --print-database
[...]
# image formats
.jpg 01;35
.jpeg 01;35
.mjpg 01;35
.mjpeg 01;35
.gif 01;35
.bmp 01;35
.pbm 01;35
.tif 01;35
.tiff 01;35
[...]
Wenn das kryptisch aussieht, liegt es daran, dass es so ist. Die erste Ziffer nach einem Dateityp ist der Attributcode und hat sechs Optionen:
- 00 keine
- 01 fett
- 04 Unterstrich
- 05 Blinzeln
- 07 rückwärts
- 08 verborgen
Die nächste Ziffer ist der Farbcode in vereinfachter Form. Sie erhalten den Farbcode, indem Sie die letzte Ziffer des ANSII-Codes nehmen (32 für grünen Vordergrund, 42 für grünen Hintergrund; 31 oder 41 für rot usw.).
Ihre Distribution setzt wahrscheinlich LS_COLORS global, sodass alle Benutzer auf Ihrem System dieselben Farben erben. Wenn Sie einen benutzerdefinierten Farbsatz wünschen, können Sie dafür dircolors verwenden. Erstellen Sie zunächst eine lokale Kopie Ihrer Farbeinstellungen:
$ dircolors --print-database > ~/.dircolors
Bearbeiten Sie Ihre lokale Liste wie gewünscht. Wenn Sie mit Ihrer Auswahl zufrieden sind, speichern Sie die Datei. Ihre Farbeinstellungen sind nur eine Datenbank und können nicht direkt von ls verwendet werden, aber Sie können dircolors verwenden, um Shellcode zu erhalten, mit dem Sie LS_COLORS setzen können:
$ dircolors --bourne-shell ~/.dircolors
LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:
pi=40;33:so=01;35:do=01;35:bd=40;33;01:
cd=40;33;01:or=40;31;01:mi=00:su=37;41:
sg=30;43:ca=30;41:tw=30;42:ow=34;
[...]
export LS_COLORS
Kopieren Sie diese Ausgabe, fügen Sie sie in Ihre ~/.bashrc-Datei ein und laden Sie sie neu. Alternativ können Sie diese Ausgabe direkt in Ihre .bashrc-Datei kopieren und neu laden.
$ dircolors --bourne-shell ~/.dircolors >> ~/.bashrc
$ source ~/.bashrc
Sie können Bash auch dazu bringen, .dircolors beim Start aufzulösen, anstatt die Konvertierung manuell durchzuführen. Realistisch gesehen werden Sie die Farben wahrscheinlich nicht oft ändern, daher kann dies zu aggressiv sein, aber es ist eine Option, wenn Sie vorhaben, Ihr Farbschema häufig zu ändern. Fügen Sie in Ihrer .bashrc-Datei diese Regel hinzu:
[[ -e $HOME/.dircolors ]] && eval "`dircolors --sh $HOME/.dircolors`"
Sollten Sie eine .dircolors-Datei in Ihrem Home-Verzeichnis haben, wertet Bash diese beim Start aus und setzt LS_COLORS entsprechend.
Farbe
Farben in Ihrem Terminal sind eine einfache Möglichkeit, sich eine schnelle visuelle Referenz für bestimmte Informationen zu verschaffen. Sie sollten sich jedoch nicht zu stark auf sie stützen. Schließlich sind Farben nicht universell. Wenn also jemand anderes Ihr System verwendet, sieht er die Farben möglicherweise nicht so wie Sie. Wenn Sie eine Vielzahl von Tools verwenden, um mit Computern zu interagieren, stellen Sie außerdem möglicherweise fest, dass einige Terminals oder Remote-Verbindungen nicht die Farben liefern, die Sie erwarten (oder Farben überhaupt nicht).
Abgesehen von diesen Warnungen können Farben in einigen Arbeitsabläufen nützlich sein und Spaß machen, also erstellen Sie eine .dircolor-Datenbank und passen Sie sie nach Herzenslust an.