Bash-Prompt anpassen

Aus wiki.archlinux.de

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:

\u@\h $(if [[ $? == 0 ]]; then echo "✓"; else echo "✗"; fi) \w $ 

und ergeben diesen Bash Prompt:

user@host ✓ ~ $ true
user@host ✓ ~ $ false
user@host ✗ ~ $ true
user@host ✓ ~ $ 

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

Dieser Artikel (oder Teile davon) steht unter GNU FDL (GNU Freie Dokumentationslizenz) und ist eine Kopie aus dem Ubuntuusers.de Wiki. Am Original-Artikel kann jeder Korrekturen und Ergänzungen vornehmen. Im Ubuntuusers.de Wiki ist eine Liste der Autoren verfügbar.