Bash-Prompt anpassen
Das Aussehen des Bash Promptes wird in der Variablen PS1 in der Datei ~/.bashrc festgelegt.
Aufbau von PS1
Die PS1 Variable besteht im einfachsten Fall aus einer Zeichenkette. Zum Beispiel:
PS1='MyPrompt >'
oder einfach nur
PS1='>'
Es können aber auch Befehle benutzt werden.
PS1='`pwd` >'
würde zum Beispiel das aktuelle Arbeitsverzeichnisse gefolgt von einem Leerzeichen und dem größer Zeichen als Prompt anzeigen.
Außerdem gibt es noch eine ganze Menge Variablen die man benutzen kann.
Variable | Ausgabe |
\a | das ASCII bell Zeichen (07) |
\A | Uhrzeit im 24-Stunden Format (hh:mm) |
\d | Datum im Format "Wochentag Monat Tag" |
\e | das ASCII Escape Zeichen (033) |
\h | Hostname auf dem die Shell läuft; bis zum ersten "." |
\H | Hostname komplett |
\j | Anzahl der Jobs der Shell |
\l | Das tty auf dem die Shell läuft |
\n | neue Zeile |
\t | Uhrzeit im 24h Format (hh:mm:ss) |
\T | Uhrzeit im 12h Format (hh:mm:ss) |
\r | carriage return |
\s | Name der verwendeten Shell (sh, bash, ...) |
\u | Username |
\v | Version der Shell |
\V | Release der bash (Version, Patchlevel) |
\w | aktuelles Arbeitsverzeichnis |
\W | letzter Teil des aktuellen Arbeitsverzeichnisses |
\! | Aktuelle History-Nummer |
\# | Aktuelle Befehls-Nummer |
\$ | Wenn root eine "#", sonst ein"$" |
\\ | Backslash |
\nnn | Zeichen entsprechend der oktalen Zahl nnn |
\[ | Beginn einer Seqenz von nicht-darstellbaren Zeichen |
\] | Ende einer Seqenz von nicht-darstellbaren Zeichen |
\@ | Uhrzeit im 12h am/pm Format |
Die Variablen, Befehle und alphanumerischen Zeichen(ketten) können beliebig kombiniert werden.
Das Arch standard Prompt setzt sich z. B. so zusammen:
PS1='[\u@\h \W]\$ '
Farben
Es ist auch möglich das Bash Prompt Farbig zu gestalten. Das kann zum Beispiel hilfreich sein um optisch darauf hinzuweisen, ob man gerade als Root oder normaler User arbeitet (siehe Beispiel weiter unten). Um Interpretationsfehler seitens der Shell bei den Farben zu vermeiden, werden sie durch \[ am Anfang und \] am Ende begrenzt. In dieser Eingrenzung werden Terminal-Kontroll-Sequenzen angegeben, welche mit \033[ beginnen und auf m enden. Eine Farbdefinition behält solange ihre Gültigkeit, bis eine neue folgt. Die letzte angegebene Farbe ist die, in der auch die Benutzereingaben erfolgen.
Sequenz | Farbe |
\[\033[0;30m\] | schwarz |
\[\033[1;30m\] | dunkelgrau |
\[\033[0;31m\] | rot |
\[\033[1;31m\] | hellrot |
\[\033[0;32m\] | grün |
\[\033[1;32m\] | hellgrün |
\[\033[0;33m\] | braun |
\[\033[1;33m\] | gelb |
\[\033[0;34m\] | blau |
\[\033[1;34m\] | hellblau |
\[\033[0;35m\] | lila |
\[\033[1;35m\] | helles lila |
\[\033[0;36m\] | dunkles türkis |
\[\033[1;36m\] | türkis |
\[\033[0;37m\] | hellgrau |
\[\033[1;37m\] | weiß |
\[\033[0m\] | farblos (zurücksetzen auf default Farbe) |
Mit den folgenden Sequenzen kann man die Hintergrundfarbe setzen:
Sequenz | Hintergrundfarbe |
\[\033[XXm\] | Keine Hintergrundfarbe |
\[\033[40;XXm\] | Schwarzer Hintergrund |
\[\033[41;XXm\] | Roter Hintergrund |
\[\033[42;XXm\] | Grüner Hintergrund |
\[\033[43;XXm\] | Hellbrauner Hintergrund |
\[\033[44;XXm\] | Blauer Hintergrund |
\[\033[45;XXm\] | Lila Hintergrund |
\[\033[46;XXm\] | Türkiser Hintergrund |
\[\033[47;XXm\] | Hellgrauer Hintergrund |
Position des Cursors
Innerhalb des Prompts lässt sich die Cursorposition mit der folgenden Sequenz setzen:
\033[<line>;<column>f
Die aktuelle Position lässt sich mit der folgenden Sequenz sichern:
\033[s
Um die gespeicherte Position wiederherzustellen verwendet man die Sequenz
\033[u
Im folgenden Beispiel wird die aktuelle Zeit in der rechten oberen Ecke des Terminals angezeigt:
PS1=">\033[s\033[1;\$((COLUMNS-4))f\$(date +%H:%M)\033[u"
Die Umgebungsvariable COLUMNS enthält die Anzahl der Spalten des Terminals. Im obigen Beispiel wird von diesem Wert 4 abgezogen, um die fünfstellige Ausgabe von date am rechten Rand zu platzieren.
Beispiel
Zur besseren Unterscheidung ob man gerade als Root oder normaler User arbeitet könnte man das standard Arch Prompt z. B. so verändern, dass der Username farbig dargestellt wird. In diesem Beispiel hellrot für Root und türkis für den User.
- in die /root/.bashrc kommt
PS1='[\[\033[1;31m\]\u\[\033[0m\]@\h \W]\$ '
- in die /home/user/.bashrc
PS1='[\[\033[1;36m\]\u\[\033[0m\]@\h \W]\$ '
Rückgabewerte von Bash Kommandos im Bash Prompt visualisieren
Um den Rückgabewert des letzten Bash Kommandos im Prompt zu visualisieren stehen zum Beispiel die Unicode Symbole
- ✓ für einen erfolgreichen Rückgabewert
- ✗ für einen fehlerhaften Rückgabewert
zur Verfügung. In dieser Beispielkonfiguration werden diese zwei Unicode Symbole verwendet:
\[\e[01;37m\]\u@$(if [[ $? == 0 ]]; then echo "\[\e[01;92m\]\h\342\234\223"; else echo "\[\e[01;31m\]\h\342\234\227"; fi) \[\e[1;37m\] \w $>
und ergeben diesen Bash Prompt:
user@host✓~ $> true
user@host✓~ $> false
user@host✗~ $> falscher\ befehl
bash: falscher befehl: Kommando nicht gefunden.
Die Idee und Motivation zu diesem Kapitel sowie weitere Beispiele hierzu finden sich im englischen ArchWiki Artikel "Color Bash Prompt".
Siehe auch
Weblinks
Bash Prompt HOWTO und Beispiele