Den bash Prompt hast du schon in verschiedenen Posts hier gesehen. Es ist die Eingabeaufforderung der Shell.Er erscheint bei einer Login-Shell immer dann, wenn die bash bereit ist, ein Kommando von dir entgegen zu nehmen und zu verarbeiten.
![bash Logo CC-BY-NC Dr. Dirk Colbry, Michigan State University](https://i0.wp.com/raspithek.de/wp-content/uploads/2024/02/Gnu-bash-logo.png?resize=800%2C337&ssl=1)
1 | Einführung |
---|---|
2 | Der bash Prompt |
3 | key bindings |
4 | Der Startvorgang |
5 | Environment Variablen |
6 | builtin commands |
7 | Arbeiten mit Dateien |
8 | nano |
9 | bash Scripting |
10 | Variablen |
11 | Verzweigungen (if) |
12 | Schleifen |
13 | Kommandozeilenparameter |
14 | exit Codes bash Tutorial Teil 14 |
15 | von der Idee zum Script |
Der vorkonfigurierte bash Prompt
Bei einem frisch installierten Raspberry Pi OS 5 sieht der Prompt nach dem ssh Login so aus:
![Der bash Prompt nach dem Login mit ssh](https://i0.wp.com/raspithek.de/wp-content/uploads/2024/02/prompt-nach-login.png?resize=1023.75%2C499&ssl=1)
Gehen wir das mal von links nach rechts durch.
pi@uter ist der Username, mit dem du dich eingeloggt hast und der Hostname deines Raspberry Pis. Nach dem Doppelpunkt steht eine Tilde „~“. Sie bezeichnet das aktuelle Verzeichnis, in dem du mit dieser Shell stehst, nämlich dein User Verzeichnis unter /home/pi
, eigentlich alle Shells verkürzen das zu ~, es spart Tipparbeit.
Dem Arbeitsverzeichnis folgt ein Leerzeichen und danach ein $
Zeichen. Durch ein weiteres Leerzeichen wird dann der Cursor abgetrennt, ab dieser Stelle werden deine Tastatureingaben ausgegeben.
Der Prompt lässt sich auf vielfache Weise konfigurieren.
bash Prompt konfigurieren
Diese Voreinstellung musst du nicht benutzen, wenn sie dir nicht gefällt. Wie das Prompt aussieht ist in der sog. Umgebungsvariable PS1 festgelegt und kann von dir angepasst werden.
Gib einfach mal
PS1='> '
ein und dein bash Prompt ändert sich in ein einzelnes >
gefolgt von einem Leerzeichen. Diese Änderung ist nur aktiv, bis du dich ausloggst, beim nächsten Login wird der Standard bash Prompt wiederhergestellt.
![](https://i0.wp.com/raspithek.de/wp-content/uploads/2024/02/prompt-modified.png?resize=1023.75%2C499&ssl=1)
Sonderzeichen
Es gibt einige Sequenzen, die definierte Werte den Prompt einfügen.
Sequenz | Bezeichnung |
---|---|
\a | ASCII Bell (Zeichen 0x07) |
\A | Uhrzeit im 24h Format) |
\e | ASCII ESC (Zeichen 0x1B) |
\h | Hostname ohne Domainteil |
\H | vollständiger Hostname |
\j | Anzahl der Jobs, die in dieser Shell laufen. |
\l | Das tty, auf dem die Shell läuft. |
\n | Linefeed, ASCII LF (Zeichen 0x0A) |
\t | wie \A |
\T | Uhrzeit im 12h Format. |
\R | Carriage Return, ASCII CR (Zeichen 0x0D) |
\s | Name der verwendeten Shell |
\u | Username des aktuellen Benutzers. |
\v | bash Version |
\w | Arbeitsverzeichnis |
\W | letzter Teil des Arbeitsverzeichnisses |
\! | aktuelle Historynummer |
\# | aktuelle Befehlsnummer |
\$ | Bei root ein „#“, sonst „$“ |
\\ | Backslash |
\nnn | ASCIIzeichen mit dem oktalen Code nnnn |
\[ | Beginn einer Sequnenz nicht darstellbarer Zeichen |
\] | Ende dieser Sequenz |
\@ | Uhrzeit im 12h (AM/PM) Format |
Bei einigen dieser Werte fällt mir kein Grund ein, warum ich die im Prompt angezeigt werden sollten.
PS1="\u@\H :\w \$"
![Beinah der Standardprompt, nur farblos](https://i0.wp.com/raspithek.de/wp-content/uploads/2024/02/prompt-ohne-farbe-1.png?resize=1023.75%2C499&ssl=1)
Damit definierst du den bash Prompt größtenteils wieder auf die Standardeinstellung zurück. Allerdings fehlt dabei die Farbdarstellung. Falls du lieber die aktuelle Uhrzeit im Prompt sehen möchtest, kannst du folgendes machen:
$PS1="\t> "
![Prompt mit Uhrzeit](https://i0.wp.com/raspithek.de/wp-content/uploads/2024/02/prompt-zeit.png?resize=1023.75%2C499&ssl=1)
Farbspielereien
In der Standarddefinition ist das Prompt mit Farben versehen. Das erhöht die Lesbarkeit. Wie das geht, zeige ich dir jetzt.
In textbasierten Terminals werden Farben und Textauszeichnungen schon seit 1979 über die ANSI Escapesequenzen definiert, die sind zwar auf den ersten Blick nicht ganz einfach zu lesen, erfüllen aber ihren Zweck.
Die Escape-Sequenzen werden immer mit einem ESC Zeichen, gefolgt von einem „[“ eingeleitet.Danach folgen die Codes, um die nachfolgenden Zeichen zu modifizieren. Ein Beispiel zeigt das vermutlich am Besten: ESC[1;33m
ist die Sequenz, um die nachfolgenden Zeichen i normaler Schrift in gelber Vordergrundfarbe darzustellen. Jede Farbe hat einen eigenen Code.
Schriftfarben | |
\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 | dunkellila |
\033[1;35m | helllila |
\033[0;36m | dunkeltürkis |
\033[1;36m | türkis |
\033[0;37m | hellgrau |
\033[1;37m | weiß |
\033[0m | farblos |
Hintergrundfarben | |
\033[40m | schwarz |
\033[41m | rot |
\033[42m | grün |
\033[43m | hellbraun |
\033[44m | blau |
\033[45m | lila |
\033[46m | türkis |
\033[47m | hellgrau |
Du kannst Schrift- und Hintergrundfarbe in einer Sequenz zusammenfassen.
echo -e "\033[0;31;46mText"
Damit wird das Wort „Text“ in rot auf blauem Hintergrund ausgegeben.
Mit diesen Sequenzen können wir uns jetzt wieder unseren ursprünglichen Prompt zusammenbauen. In der Tabelle oben siehst du, dass das ESC-Zeichen als \e eingefügt werden kann, du musst also nicht unbedingt auf den oktaler Wert zurückgreifen.
PS1="\e[1;32m\u@\H :\e[0;34m\w \$\e[0m"
User und Hostname werden in hellgrün \e[1;32m
dargestellt, das aktuelle Verzeichnis in blau \e[34m
. Zum Abschluss wird mit \e[0m
die Farbe zurückgesetzt.
![Das Prompt mit verschiedenen Farben über die ANSI-Sequenzen](https://i0.wp.com/raspithek.de/wp-content/uploads/2024/02/prompt-mit-farbe.png?resize=1023.75%2C732&ssl=1)
Der bash Prompt in der Praxis
Der Prompt dient in erster Linie dazu, dir zu signalisieren, dass die bash bereit ist, eine neue Eingabe von dir entgegen zu nehmen. Alles, was du am Prompt eingibst, versucht die bash auszuführen, entweder als eingebautes Kommando oder als externes Kommando, das vom Datenträger nachgeladen werden muss.
Gib beim Prompt einfach mal ein
> ls
Dieses eingebaute Kommando listet dir alle Dateien und Unterverzeichnisse im aktuellen Verzeichnis auf. Das Aussehen deines Prompts hat keinerlei Einfluss auf das Kommando. Der Prompt dient nur deiner Information.
Im nächsten Teil zeig ich dir, wie key bindings dir die Arbeit am Prompt leichter machen.