Individueller Bash Prompt
Jeder der seinen Bash Prompt in der normal Ausführung langweilig findet, kann hier nachlesen, wie man sich einen individuellen zusammen stellen kann. Man kann dabei vielerlei Informationen in den Prompt einbetten und ihn mit Farbigen Elementen hervorheben.
Auf diesem Bild ist zum Beispiel mein Prompt zu sehen. In den beiden eckigen Klammern steht der aktuell angemeldete Benutzer. Welcher sich Beispielsweise bei einem "su" in "root" ändert. In den runden blauen Klammern steht der aktuelle Pfad in dem ich mich gerade befinde. Ist also in dem Fall hier das Home Verzeichnis.
Das ist nur mal ein kleines Beispiel, wie sich Prompts Designern lassen. Dies sieht nicht nur schön aus, sondern hilft auch dabei, einzelne Befehle im Verlauf eines Terminals auseinander zu halten. Bei größeren ausgaben sieht man dann immer gleich sofort wo ein neuer Befehl anfängt.
Um ein eigenes Prompt zu erstellen, musst du wie weiter unten Beschrieben die Prompt Definition in die .bashrc Datei in deinem Home Verzeichnis eintragen.
Farbe
Da Farben in der Bash mit so genannten "Terminal-Control-Sequenzen" gesetzt werden, sollte man sich ein paar Variablen dafür setzen, welches die Sache sehr erleichtert.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # Diverse Farbcodes in einer Funktion zusammen gefasst function farbige_shell { local GRAY="\[\033[1;30m\]" local LIGHT_GRAY="\[\033[0;37m\]" local CYAN="\[\033[0;36m\]" local LIGHT_CYAN="\[\033[1;36m\]" local NO_COLOUR="\[\033[0m\]" local BLUE="\[\033[0;34m\]" local LIGHT_BLUE="\[\033[1;34m\]" local RED="\[\033[0;31m\]" local LIGHT_RED="\[\033[1;31m\]" local GREEN="\[\033[0;32m\]" local LIGHT_GREEN="\[\033[1;32m\]" local PURPLE="\[\033[0;35m\]" local LIGHT_PURPLE="\[\033[1;35m\]" local BROWN="\[\033[0;33m\]" local YELLOW="\[\033[1;33m\]" local BLACK="\[\033[0;30m\]" local WHITE="\[\033[1;37m\]" } |
Nun kann man an den Variablen Namen erkennen, um welche Farbe es sich handelt, ohne groß nachschauen zu müssen.
Variablen
| Code | Beschreibung |
|---|---|
a |
das ASCII bell Zeichen (07) |
A |
Uhrzeit im 24-Stunden Format (hh:mm) |
d |
Datum in "Wochentag Monat Tag" z.B., "Mit Mai 26") |
e |
ASCII escape Zeichen (033) |
h |
Hostname auf dem die Shell läuft bis zum ersten "." |
H |
Hostname komplett |
j |
Anzahl der Jobs in der Shell |
l |
Das tty, auf dem die Shell läuft |
n |
Neue Zeile |
t |
Uhrzeit im 24-Stunden Format (hh:mm:ss) |
T |
Uhrzeit im 12-Stunden Format (hh:mm:ss) |
r |
carriage return |
s |
Name der verwendeten Shell (sh, bash, ..) |
u |
Name des Nutzers, der die Shell gestartet hat |
v |
Version der bash (z.B. 2.00) |
V |
Release der bash, Version, Patchlevel |
w |
momentanes Arbeitsverzeichnis |
W |
letzte Komponente des Arbeitsverzeichnisses |
! |
Aktuelle History-Nummer |
# |
Aktuelle Befehls-Nummer |
$ |
Wenn root ein "#", sonst ein "$" |
\ |
Backslash |
nnn |
Zeichen entsprechend der oktalen Zahl nnn |
[ |
Beginn einer Sequenz von nicht-darstellbaren Zeichen |
] |
Ende einer Sequenz von nicht-darstellbaren Zeichen |
@ |
Aktuelle Zeit im 12-Stunden am/pm Format |
|
Quelle: ubuntuusers.de |
|
Neben den Variablen in der oberen Tabelle können auch normale Shell Befehle in das Prompt eingebaut werden. So das man zB die Kernelversion oder eigene Bash Scripte in den Prompt einbauen kann.
Eine Variable wird mit einem "\" und dann dem jeweiligen Symbol aufgerufen. So erscheint zum Beispiel bei "\H" den Hostnamen der Linux Maschine.
Ein Beispiel
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | # Ein Bash Prompt # Resultat ist in dem kleinen Bild weiter oben zu sehen function farbige_shell { local GRAY="\[\033[1;30m\]" local LIGHT_GRAY="\[\033[0;37m\]" local CYAN="\[\033[0;36m\]" local LIGHT_CYAN="\[\033[1;36m\]" local NO_COLOUR="\[\033[0m\]" local BLUE="\[\033[0;34m\]" local LIGHT_BLUE="\[\033[1;34m\]" local RED="\[\033[0;31m\]" local LIGHT_RED="\[\033[1;31m\]" local GREEN="\[\033[0;32m\]" local LIGHT_GREEN="\[\033[1;32m\]" local PURPLE="\[\033[0;35m\]" local LIGHT_PURPLE="\[\033[1;35m\]" local BROWN="\[\033[0;33m\]" local YELLOW="\[\033[1;33m\]" local BLACK="\[\033[0;30m\]" local WHITE="\[\033[1;37m\]" PS1="\n$RED<$LIGHT_CYAN\t$RED> $BLUE[$LIGHT_CYAN\w$BLUE] $NO_COLOUR" } farbige_shell |
Der Prompt wird in der Variable "PS1" definiert. Darin kann man dann, wie oben im Codeblock in Zeile 21 zu sehen ist, einfach Farben und Variablen reinschreiben. Eine Farbe wird immer so lange verwendet, bis eine andere definiert wird.
Am Ende des Prompts muss immer die Farbe "$NO_COLOR" gesetzt werden. Ansonsten wird der eingegebene Befehl in der zuletzt definierten Farbe ausgegeben, und nicht mit der Systemfarbe des Terminals.
Da der Prompt und die Farben in einer Funktion definiert sind, muss diese natürlich auch aufgerufen werden. Dies Geschieht in Zeile 25.




