Mit ein paar grundlegenden Kniffen bringen Sie Schwung und Farbe in die Arbeit auf der Kommandozeile.
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. |
Zusammenhängend, bitte!
Mit den gezeigten Funktionen finden Sie zwar Befehle wieder, diese erscheinen dann jedoch ziemlich aus dem Zusammenhang gerissen. Um komplexere Abläufe zurück auf den Schirm zu holen, können Sie einerseits die History-Datei (~/.bash_history) betrachten oder das Shell-Builtinfc (“Fix Command”) zur Hilfe nehmen. Zusammen mit dem Parameter -l gibt das Programm standardmäßig die letzten 17 Befehle nummeriert aus. Hängen Sie weiterhin eine Ziffer an, um noch genauer anzugeben, wie groß der Bereich sein soll. So zeigt das Kommando fc -l -5 die letzten fünf Befehle an.
Eine Alternative zum Protokollieren auf der Shell bietet das Programm script: Starten Sie eine längere Session beispielsweise mit dem Befehl script MeinProtokoll, um alle nun folgenden Kommandos und ihre Ausgabe aufzuzeichnen. Sie beenden den praktischen Schriftführer durch Eingabe von [Strg]+[D].
Konfigurationsdateien der Bash
Die Bash bringt gleich mehrere Startdateien mit, die das Verhalten der Shell (und anderer Programme) beeinflussen. Als wäre das Chaos damit nicht schon perfekt, kochen die Distributoren oft noch ihr eigenes Süppchen und setzen unterschiedliche Prioritäten bei den Konfigurationsdateien respektive verweisen in diesen auf andere Dateien.
Wenn Sie sich auf einer virtuellen Konsole oder über SSH anmelden, starten Sie eine so genannte Login-Shell – in der Prozessliste erscheint sie mit vorangestelltem Minuszeichen:
$ ps auxwww | grep bash huhnix 3778 0.0 0.3 3056? 1652 tty1 Ss+ May28 0:00? -bash huhnix 4193 0.0 0.3 3068? 1672 pts/1 Ss May28 0:00? /bin/bash
Diese Login-Shell schaut zunächst im Home-Verzeichnis des Benutzers nach der Datei ~/.bash_profile. Fehlt diese, sucht die Bash nach der Datei ~/.bash_login, andernfalls nach /etc/profile bzw. nach ~/.profile.
Daneben gibt es so genannte interaktive Shells – etwa solche, die Sie aus einer anderen Shell heraus starten. Dazu gehören auch Xterms oder andere Konsolenprogramme unter der grafischen Benutzeroberfläche. Anweisungen für diese Shells stehen in der privaten ~/.bashrc oder der systemweiten Datei /etc/bash.bashrc. Hier tragen Sie auch die in den folgenden Abschnitten gezeigten Alias-Definitionen und Umgebungsvariablen ein.
Jedes mal, wenn Sie die eigene ~/.bashrc angepasst haben, starten Sie entweder eine neue Shell oder führen das Skript source ~/.bashrc aus, um die Änderungen einzulesen. Den Befehl können Sie abkürzen, wenn Sie ~/.bashrc eingeben.
Ein Alias für alle Fälle
Ein praktisches Feature ist das Builtin Alias: Mit diesem definieren Sie häufig verwendete Befehle samt aller ihrer Optionen und machen sie so unter einem kürzeren, vielleicht besser zu merkenden Namen verfügbar. Die meisten Distributionen definieren standardmäßig einige dieser Abkürzungen – welche Alias-Definitionen Ihre Bash kennt, erfahren Sie, wenn Sie am Prompt den gleichlautenden Befehl eingeben:
$ alias alias ls='ls --color=auto'
Um ein Alias für die aktuelle Shell-Sitzung zu definieren, geben Sie den Befehl alias, den Namen für das neue Kürzel, ein Gleichheitszeichen und den Befehl (in Anführungszeichen) ein, beispielsweise:
alias ll='ls -l'
Mit dem Kommando unalias werden Sie die Abkürzung wieder los. So löscht unalias ll das vorher definierte Alias wieder.
Soll ein solches Alias dauerhaft werden, tragen Sie Definition einfach in die Datei ~/.bashrc ein und lesen diese neu ein.
Alles variabel
Mit den schon erwähnten Umgebungsvariablen erweitern Sie den Funktionsumfang der Shell und legen das Verhalten anderer Programme fest. Standardmäßig bringt das System bereits einige dieser Variablen mit; wie im Beispiel von HISTSIZE (Abschnitt “Ein gutes Gedächtnis”) gezeigt, zeigen Sie den Wert einer solchen Variable mit dem Kommando echo an. Der Variable selbst stellen Sie ein Dollarzeichen voran:
echo $HISTSIZE
Wer sich für die vollständige Liste aller Bash-Umgebungsvariablen interessiert, erhält diese durch Eingabe von env ebenfalls auf der Kommandozeile (Abbildung 1).

Abbildung 1: Ganz schön variabel – über “env” zeigen Sie eine vollständige Liste aller gesetzten Bash-Umgebungsvariablen an.
Mit dem Befehl export setzen Sie eine Variable neu. Um beispielsweise ein Programm ein einziges Mal in einer anderen Sprache zu starten, setzen Sie temporär die Variable LANG und geben dahinter – durch ein Semikolon abgetrennt – den ausführbaren Programmnamen an. Das Kommando
LANG=C; firefox
startet den beliebten Browser beispielsweise in englischer Sprache. Ebenso können Sie mit dem Kommando unset eine bereits gesetzte Variable für die aktuelle Shell deaktivieren, beispielsweise:
unset LS_COLORS
Um eine Variable dauerhaft zu setzen, tragen Sie den schon gezeigten export-Aufruf in die Datei ~/.bashrc ein. Abbildung 2 zeigt eine kommentierte Bash-Einrichtungsdatei mit verschiedenen Beispielen für praktische Variablen.

Abbildung 2: Das Verhalten der Bash und vieler anderer Programme regeln Sie durch entsprechende Umgebungsvariablen.
Glossar
-
Builtin
-
Bei Builtins handelt es sich nicht um eigenständige Binärprogramme, sondern um eingebaute Befehle, die die Shell mitliefert. Builtins haben keine eigene Manpage, sondern ihre Dokumentation ist in der Regel Teil der Bash-Dokumentation (
man bash).
Infos
[1] Bash Prompt HOWTO: http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/




