Tricks für die Bash
Appetitliche Shell
Die Shell vermittelt zwischen dem Benutzer und dem Betriebssystem als Kommandozeileninterpreter: Sie wertet unter anderem Befehle, Platzhalter und Variablen aus, verknüpft Kommandos miteinander und leitet Programmausgaben an andere Tools oder in Dateien weiter. Neben der Bourne Shell (Sh), Korn Shell (Ksh), C Shell (Csh) und Z Shell (Zsh) spielt auf Unix-Systemen vor allem die Bourne Again Shell, kurz Bash, eine Rolle – sie hat sich als Standard unter Linux durchgesetzt. Das Arbeiten auf der Bash gestaltet sich wesentlich angenehmer, wenn man den Prompt an eigene Vorstellungen anpasst, die verschiedenen Tastaturkürzel kennt und den Funktionsumfang mit eigenen Alias-Definitionen und Umgebungsvariablen erweitert.
Auf Kommando!
Befehle geben Sie standardmäßig am Shell-Prompt ein. Eine typische Eingabeaufforderung sieht beispielsweise so aus:
huhn@huhnix:~>
Der Prompt verrät mehr zum Benutzernamen, zum Namen des Rechners, auf dem Sie arbeiten, und zum aktuellen Arbeitsverzeichnis (im Beispiel das Home-Verzeichnis des Benutzers, durch die Tilde repräsentiert). Wenn Sie als Systemverwalter arbeiten, sieht der Prompt anders aus – dass Sie Root sind, erkennen Sie auf den meisten Systemen durch das Rautezeichen (#
) im Prompt:
huhnix:~ #
Den Prompt können Sie individuell anpassen: Datum und Uhrzeit, Uptime des Rechners oder verschiedene Farben – mit wenigen Handgriffen richten Sie Ihre Arbeitsumgebung selbst ein. Zuständig für das Aussehen ist die Umgebungsvariable PS1
(siehe auch Abschnitt "Alles variabel"). Wer beispielsweise die aktuelle Uhrzeit (im 24-Stunden-Format) vor dem Benutzer- und Rechnernamen sehen möchte, gefolgt vom aktuellen Arbeitsverzeichnis, der setzt die Variable temporär mit dem Befehl:
$ export PS1="[\t] \u@\h:\w> " [19:11:06] huhn@huhnix:~>
Zum Einsatz kommen hier die Escape-Sequenzen \t
(Uhrzeit im 24-Stunden-Format), \u
(User-Name des aktuell angemeldeten Benutzers), \h
(Hostname bis zum ersten Punkt) und \w
(aktuelles Arbeitsverzeichnis). Mit speziellen Escape-Sequenzen lässt sich der Prompt auch farblich gestalten, etwa indem Sie einen normalen Benutzer-Prompt in Grün und den Prompt des Administrators in Rot anzeigen.
Eine Auflistung sämtlicher Escape-Sequenzen finden Sie in der Bash-Manpage; weiterhin lohnt sich ein Blick ins Bash-Prompt-Howto [1].
Ein gutes Gedächtnis
Die Bash hat ein gutes Gedächtnis: Alle Eingaben merkt sie sich in der so genannten History (Datei ~/.bash_history
), so dass sich alte Kommandos schnell wieder auf den Schirm zaubern lassen. Drücken Sie [Pfeil oben], sehen Sie das zuletzte getippte Kommando auf dem Bildschirm. Wenn Sie die Taste mehrmals hintereinander drücken, wandern Sie weiter zurück, und [Pfeil unten] bringt Sie wieder nach vorne. Wieder zurückgeholte Befehle können Sie modifizieren und natürlich mit Druck auf die Eingabetaste erneut ausführen.
Das Gedächtnis der Bash ist allerdings nur so gut, wie in der Umgebungsvariable HISTSIZE
definiert (siehe Abschnitt "Alles variabel"). Für wie viele Kommandos dort Platz ist, erfahren Sie ebenfalls auf der Shell:
$ echo $HISTSIZE 500
Sobald diese Grenze erreicht ist, verschwinden die ersten Befehle aus der Datei, um Platz für neue Eingaben zu machen. Damit Sie sich bei der Suche nach alten Kommandos nicht die Finger wundtippen müssen, bietet die Bash eine eingebaute Suchfunktion. Drücken Sie die Tastenkombination [Strg-R] bzw. [Strg-S] (siehe auch Tabelle "Tastenkürzel der Bash"), um die History rückwärts oder vorwärts gezielt nach Kommandos zu durchforsten. Der Prompt verändert sich; so zeigt [Strg-R] beispielsweise folgende Eingabeaufforderung an:
(reverse-i-search)`':
Hinter dem Doppelpunkt tippen Sie nun den gesuchten Befehl (oder einfach nur Teile des Kommandos) ein. Die Bash vervollständigt die Kommandos bereits während der Eingabe, so dass manchmal wenige Buchstaben ausreichen, um einen vergangene Befehl aufzuspüren. Um ein gefundenes Kommando auszuführen, drücken Sie die Eingabetaste. Alternativ suchen Sie durch wiederholten Druck auf [Strg]+[R] weiter, bis Sie den richtigen Befehl gefunden haben. Geben Sie [Esc] ein, um das gefundene Kommando vor dem Ausführen noch zu verändern.
Tastenkürzel der Bash
[Strg-A] | Springt zurück an den Anfang der Eingabe. |
[Strg-E] | Springt ans Ende der Eingabe. |
[Esc-B] | Geht ein Wort zurück. |
[Esc-F] | Geht ein Wort vor. |
[Strg-B] | Springt ein Zeichen zurück. |
[Strg-F] | Springt ein Zeichen vor. |
[Strg-K] | Löscht von der Cursorposition bis zum Ende der Eingabe. |
[Strg-U] | Löscht von der Cursorposition bis zum Anfang der Zeile. |
[Strg-W] | Löscht das Wort links vom Cursor. |
[Strg-T] | Vertauscht die beiden Zeichen vor und unter dem Cursor. |
[Esc-T] | Vertauscht die beiden vorangehenden Wörter. |
[Strg-L] | Löscht den Inhalt des Terminal-Fensters. |