Bash-Prompt anpassen: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
(Sektion "Postition des Cursors" hinzugefügt)
Zeile 200: Zeile 200:
  |}
  |}


=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=
=Beispiel=

Version vom 29. November 2008, 17:14 Uhr

Das Aussehen des Bash Promptes wird in der Variblen 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.


Ausserdem 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]\$ '


Links

Bash-Completion

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.