Kommandozeile Schnellstart – Shell anpassen mit PS1
Wie kannst du deine Shell unter Linux anpassen?
Standardmäßig zeigen die meisten Linux-Distributionen den Hostnamen und das aktuelle Arbeitsverzeichnis an. Du kannst deine Eingabeaufforderung aber auch anpassen, um Informationen anzuzeigen, die für dich wichtig sind. Du kannst sogar das Design ändern, indem du Farben hinzufügst. In dieser kurzen Lektion lernst du, wie man genau das macht.
Shell anpassen mit PS1
Die Shell wird über eine spezielle Shell-Variable gesteuert. Du musst dafür die Variablen PS1, PS2, PS3 und PS4 konfigurieren bzw. ändern. Wenn die jeweilige Variable gesetzt ist, wird der Wert vor der Ausgabe jedes Prompts als Befehl ausgeführt:
- PS1 - Der Wert dieses Parameters wird expandiert und als primärer Prompt-String verwendet. Der Standardwert ist s-v$ .
- PS2 - Der Wert dieses Parameters wird wie bei PS1 expandiert und als sekundäre Promptzeichenfolge verwendet. Der Standardwert ist >
- PS3 - Der Wert dieses Parameters wird als Eingabeaufforderung für den Select-Befehl verwendet
- PS4 - Der Wert dieses Parameters wird wie bei PS1 erweitert, und der Wert wird vor jeder Anzeige der Befehlsbash während einer Ausführungsverfolgung angezeigt. Das erste Zeichen von PS4 wird bei Bedarf mehrfach wiederholt, um mehrere Ebenen der Indirektion anzuzeigen. Die Voreinstellung ist +
Wie zeige ich die aktuelle Einstellung des Prompts meiner Shell an?
Verwende dafür einfach den Befehl echo $PS1 und drücke Enter:
echo $PS1
Output:
u@h W]$
Wie kann ich die Eingabeaufforderung ändern?
Das Ändern der Eingabeaufforderung ist im Handumdrehen erledigt. Weise dafür der Variable $PS1 einen neuen Wert zu und drücke Enter:
Meine alte Promt: [lerneprog@bla ~]$
PS1="Ich bin Profi : "
Output:
Ich bin Profi :
Wenn du deine Shell ausführst wird die primäre Eingabeaufforderung PS1 angezeigt. Die sekundäre Eingabeaufforderung PS2, wird angezeigt, wenn mehrere Eingaben notwendig sind, um den jeweiligen Befehl abzuschließen. Die Shell ermöglicht die Anpassung dieser Promptzeichenfolgen durch Einfügen einer Reihe von Sonderzeichen mit umgekehrtem Schrägstrich (Backslash).
Hier eine Liste der Sonderzeichen:
(Probier sie am besten gleich selbst aus!)
- d : das Datum im Format "Tag Monat Datum" (z.B. "Di 26. Mai")
- e : ein ASCII-Escape-Char (033)
- h : der Hostname bis zum ersten '.'
- H : der Hostname
- j : die Anzahl der von der Shell verwalteten Arbeitsplätze
- l : der Basisname des Terminal-Devices der Shell
: Zeilenumbruch (Neue Zeile)- r : Return
- s : der Name der Shell, der Basisname von $0 (der Teil nach dem letzten Schrägstrich)
- t : die aktuelle Uhrzeit im 24-Stunden-Format HH:MM:SS
- T : die aktuelle Zeit im 12-Stunden-Format HH:MM:SS
- @ : die aktuelle Uhrzeit im 12-Stunden-Format am/pm
- A : die aktuelle Uhrzeit im 24-Stunden-Format HH:MM
- u : der Benutzername des aktuellen Benutzers
- v : die Version der Shell (z.B. 2.00)
- V : die Version der Shell, Version + Patch (z.B. 2.00.0)
- w : das aktuelle Arbeitsverzeichnis, wobei $HOME mit einer Tilde abgekürzt ist
- W : der Basisname des aktuellen Arbeitsverzeichnisses, wobei $HOME mit einer Tilde abgekürzt wird
- ! : die historische Nummer dieses Befehls
- # : die Befehlsnummer dieses Befehls
- $ : wenn die UID 0 ist, ein #, sonst ein $
nn : das Zeichen, das der Oktalzahl nnn entspricht- \ : ein Backslash
- [ : startet eine Sequenz von nicht druckenden Zeichen
- ] : beendet eine Sequenz von nicht-druckenden Zeichen
Zwei Beispiele zu den Sonderzeichen:
Lass uns versuchen, die Eingabeaufforderung so einzustellen, dass sie das heutige Datum und den Hostnamen anzeigen kann:
PS1="d h $ "
Output:
So Jul 12 server $
Stelle nun die Eingabeaufforderung so ein, dass Datum/Uhrzeit, Hostname und das aktuelle Arbeitsverzeichnis angezeigt werden:
PS1="[d t u@h:w:w ] $ "
Output:
[So Jul 12 11:20:58 lerneprog@server:~ ] $
Deine Aufgabe - Jetzt bist du dran:
1. Drucke die $PS1-Variable mit dem echo-Befehl
2. Ändere die PS1-Variable in einen String deiner Wahl z.B. "Ich bin CLI-Profi : "
Alles erledigt? Wir sehen uns in der nächsten Lektion!