Erfahrene Linux-Nutzer schwören auf flexible Kommandozeilentools, mit denen sie manche Aufgabe schneller bewältigen als in grafischen Programmen. Wir stellen interessante Anwendungen und Aufrufparameter vor, um auch Einsteiger zu einem Ausflug in die Shell zu ermutigen.
Tipp: Besser tippen auf der Bash: Tab-Completion
Die Bash (Bourne-again shell) ist unter Linux die Standard-Shell. Sie interpretiert die Kommandos, die Sie eingeben, führt sie aus und zeigt das Ergebnis an. Viele Befehlseingaben können Sie abkürzen, indem Sie die Tabulatortaste zu Hilfe nehmen. Um beispielsweise auf der Shell ins Verzeichnis /etc zu wechseln, reicht es, wenn Sie cd /e tippen und dann [Tab] drücken. Da kein zweites Verzeichnis existiert, das mit /e beginnt, ist die Eingabe nach diesen zwei Zeichen bereits eindeutig, und die Bash vervollständigt den Ordnernamen. Am Prompt erscheint cd /etc, und Sie können das Kommando mit [Eingabe] absenden. Ist das Kommando beim Drücken der Taste [Tab] nicht eindeutig, ertönt ein Piepton. Wenn Sie jetzt nochmals [Tab] drücken, listet die Bash alle Möglichkeiten auf (Abbildung 1).

Tab,Tab, zeigt alle Verzeichnisse unterhalb von "/" an. Nach "cd /m" und Tab,Tab schlägt die Shell den Wechsel nach "/media" oder "/mnt" vor.” width=”300″ height=”91″ />
Tab,Tab, zeigt alle Verzeichnisse unterhalb von “/” an. Nach “cd /m” und Tab,Tab schlägt die Shell den Wechsel nach “/media” oder “/mnt” vor. Dieses Feature nennt man Tab-Completion (von engl. “to complete” = “vervollständigen”). Die Befehlszeilenergänzung funktioniert nicht nur bei Datei- und Verzeichnisnamen, sondern auch für Programme und Umgebungsvariablen. Ist das Zusatzpaket bash-completion installiert, klappt es sogar mit Aufrufparametern von Shell-Kommandos (siehe nächster Tipp) sowie Host- und Benutzernamen. Oft genutzte Umgebungsvariablen sind HOME (der Pfad zum Home-Verzeichnis) und PATH (Suchpfad für die Shell, der die Befehlseingabe erleichtert [1]). Die Werte aller Variablen zeigen Sie mit dem Befehl printenv an (Abbildung 2), den einer einzelnen lesen Sie mit echo aus, z. B. echo $SHELL. (Beachten Sie das Dollarzeichen vor dem Variablennamen.)

Abbildung 2: Mit dem Befehl “printenv” (was so viel heißt wie “drucke die Umgebungseinstellungen am Bildschirm aus”) zeigen Sie alle für den Benutzer gesetzten Umgebungsvariablen.
Wie kommt jetzt die Tab-Completion zum Zug? Angenommen, Sie erinnern sich, dass es da eine bestimmte Umgebungsvariable gibt, die mit dem Buchstaben P beginnt. Tippen Sie also echo $P, gefolgt von [Tab],[Tab]:
$ echo $P $PATH $PPID $PS2 $PWD $PIPESTATUS $PS1 $PS4
Sie sehen nun alle möglichen Varianten und können die Eingabe wie gezeigt vervollständigen.
Tipp: Tab-Completion für Aufrufoptionen
Aktuelle Versionen der Bash vervollständigen mit der Tabulatortaste auch Namen von Programmen und kennen sogar deren Aufrufoptionen. Schauen Sie sich dazu die Shell-Sitzung aus Abbildung 3 an. Der Benutzer tippt zuerst apt- und drückt [Tab],[Tab], und die Bash zeigt nun alle Befehle an, deren Namen mit der Zeichenkette beginnen. Die Entscheidung fällt auf apt-cache, und da der Anwender unsicher ist, welchen Aufrufparameter er benötigt, betätigt er wieder zweimal [Tab]. Insgesamt 17 Optionen sind in Verbindung mit apt-cache möglich, und der Benutzer wählt apt-cache show, um die Paketinformationen zu einem oder mehreren Paketen anzuzeigen. Er erinnert sich, dass das Paket mit dem Namen core beginnt und tippt die vier Buchstaben nach show ein. [Tab],[Tab] bestätigt, dass es zwei Pakete gibt, die passen: corekeeper und coreutils. Er tippt das U, gefolgt von [Tab],[Tab], ist am Ziel und schickt alles mit [Eingabe] ab.

Abbildung 3: Hier sehen Sie eine typische Shell-Sitzung, die mit Tab-Completion Aufrufparameter und Paketnamen vervollständigt.
Unter Ubuntu funktioniert dieser Tipp auf Anhieb, OpenSuse-Anwender müssen zunächst das Paket bash-completion nachinstallieren – das gelingt mit folgendem Kommando:
sudo zypper in bash-completion
Alle bereits laufenden Shells unterstützen das neue Feature noch nicht – schließen Sie darum alle Terminalfenster und öffnen Sie diese erneut, um Vorschläge für Aufrufparameter zu erhalten.
Tipp: Piepen für die Bash abschalten
Wie im vorigen Tipp beschrieben, gibt die Shell einen Piepston aus, wenn die Tab-Completion mehrere Angebote zur Vervollständigung macht. Finden Sie das Piepsen störend, können Sie es in der Konfigurationsdatei der Shell abschalten. Dazu bearbeiten Sie die versteckte Datei ~/.bashrc aus Ihrem Home-Verzeichnis in einem Texteditor:
- Öffnen Sie den Schnellstarter mit [Alt]+[F2]. Das klappt unter allen gängigen Desktopumgebungen, also Gnome, KDE, Xfce und Cinnamon bzw. Mate.
- Geben Sie den Befehl
gedit ~/.bashrcein. Wenn Sie anstelle von GEdit einen anderen Texteditor bevorzugen, ersetzen Sie den Programmnamen im Aufruf, beispielsweise durchkate,kwriteoder Ähnliches. -
Tragen Sie an einer beliebigen Stelle in der Datei die folgenden beiden Zeilen ein:
# Piepsen der Bash abschalten bind "set bell-style none"
-
Speichern Sie die Änderungen und verlassen Sie den Editor. Alle ab sofort neu gestarteten Shells werten den Eintrag aus, die bereits laufenden aber nicht. Um auch dort die Geräusche abzuschalten, können Sie die Shells mit
source ~/.bashrc
veranlassen, die eben veränderte Datei neu einzulesen.
In den auf diese Weise stumm geschalteten Shells verschwindet das lästige Gepiepse. Möchten Sie es zu einem späteren Zeitpunkt wieder aktivieren, bearbeiten Sie die Einrichtungsdatei wieder, wie in der Schritt-für-Schritt-Anleitung gezeigt. Setzen Sie nun vor die Zeile, die mit bind beginnt ein Rautezeichen, um sie auszukommentieren und damit zu deaktivieren. Alternativ können Sie die Zeile auch ganz löschen. Kommentarzeichen haben allerdings den Vorteil, dass man sie schnell wieder entfernen und damit eine Option wieder freischalten kann. Um nur in einer einzelnen Shell die Signaltöne zu reaktivieren, geben Sie dort das Kommando
bind "set bell-style audible"
ein: “audible” heißt “hörbar”.
Tipp: Bash: Completion ohne “Doppel-Tab”
Wie Sie in Tipp 1 erfahren haben, zeigt die Bash die Möglichkeiten zur Vervollständigung an, wenn Sie die Tabulatortaste ein zweites Mal betätigen. Falls Sie den zweiten Tastendruck einsparen möchten, können Sie mit einem Eintrag in der Konfigurationsdatei dafür sorgen, dass einmaliges Drücken von [Tab] reicht. Bearbeiten Sie dazu wie im vorigen Tipp gezeigt die Datei ~/.bashrc in einem Texteditor und fügen Sie die folgende Zeile hinzu:
bind "set show-all-if-ambiguous on"
Nach dem Speichern lesen Sie die Datei wieder über source ~/.bashrc neu ein oder starten eine neue Bash-Sitzung.
Tipp: Mutt: Viele Anhänge auf einmal speichern
In der letzten Ausgabe der Shell-Tipps haben wir unter anderem gezeigt, wie Sie im Mailclient Mutt Attachments auswählen und weiterleiten. Dabei ging es auch um das so genannte Tagging, also die Mehrfachauswahl mit der Taste [T]. Diesen Trick können Sie auch dazu verwenden, gleich mehrere Attachments auf einmal zu speichern. Erhalten Sie beispielsweise Post von einem netten Menschen, der zahlreiche Bilder angehängt hat, ohne diese vorher mit tar oder zip zu einem Archiv zusammenzufassen, müssten Sie diese alle von Hand ablegen: Dazu betrachten Sie die Anhänge mit der Taste [V], blättern mit der Pfeiltaste zum ersten Bild und drücken [S]. Danach bestätigen Sie den Dateinamen über [Eingabe]. Mutt wechselt automatisch zum nächsten Anhang, wo Sie wieder [S],[Eingabe] drücken usw.
Schneller geht es, wenn Sie [V] drücken und alle Dateien zunächst mit [T] auswählen. So getaggte Anhänge erscheinen mit einem Sternchen am Zeilenanfang. Danach drücken Sie nicht etwa [S] zum Speichern, sondern weisen Mutt zunächst an, dass Sie alle getaggten Elemente meinen. Dazu verwenden Sie das Tag-Präfix; in der Voreinstellung ist das das Semikolon ([Umschalt]+[,], also “;”). In der Statuszeile am unteren Rand erscheint nun der Hinweis Tag- (Abbildung 4). Drücken Sie nun [S], erscheint in der Statuszeile Speichern in Datei: und dahinter der Dateiname. Mit [Eingabe] landen dann nacheinander alle getaggten Attachments auf der Platte.

T die gewünschten Attachments aus, dann aktivieren Sie mit einem Semikolon das Tag-Präfix, und zum Schluss speichern Sie.” width=”300″ height=”210″ />
Abbildung 4: Zuerst wählen Sie mitT die gewünschten Attachments aus, dann aktivieren Sie mit einem Semikolon das Tag-Präfix, und zum Schluss speichern Sie.Tipp: Mutt: Makro fürs Taggen und Speichern
Sie kennen das vielleicht von Officeprogrammen wie LibreOffice oder Microsoft Office: Eine Folge von Anweisungen können Sie als Makro speichern und dieses dann mit einem einzigen Kommando ausführen. Auch der Mailclient Mutt kennt Makros. Sie definieren diese in der Konfigurationsdatei des Programms, die Sie im eigenen Home-Verzeichnis als versteckte Datei ~/.muttrc finden. Um ein Makro zum automatischen Taggen und Speichern von Mail-Threads zu erzeugen, öffnen Sie die Datei in einem Texteditor Ihrer Wahl und fügen eine solche Zeile hinzu:
macro index <F9> "<tag-thread><tag-prefix>s=Easy-Listen"
Das Makro ist schnell erklärt. Wenn Sie in der Indexansicht die Taste [F9] drücken, führt Mutt die folgende Befehlskette aus: Der Client taggt den Thread (Tastenkombination [Esc],[T]), über dem sich der Cursor befindet, ruft das im vorigen Tipp erwähnte Tag-Präfix auf (Semikolon) und speichert alles im Mailordner namens Easy-Listen.
Tipp: Vim: Besser navigieren im Texteditor
Im Vim-Vorgänger vi war es nicht möglich, die Pfeil- und Bildlauftasten zum Blättern in den Dateien zu nutzen. Stattdessen nutzten Anwender dazu die Tasten [H] (links), [J] (runter), [K] (hoch) und [L] (rechts). Diese Kommandos versteht auch Vim; zusätzlich stehen Ihnen aber die Cursortasten zur Verfügung. Schneller geht’s allerdings mit einigen praktischen Sonderfunktionen. So bringt Sie der Shortcut [Umschalt]+[L] beispielsweise ans Ende des Bildschirms, [Umschalt]+[H] ganz nach oben und [Umschalt]+[M] in die Mitte. Der aktuell angezeigte Ausschnitt aus der Datei ändert sich dabei nicht (kein Scrollen im Dokument), Sie verschieben nur den Cursor.
Drei weitere Shortcuts erledigen etwas Ähnliches: Sie ändern aber nicht die Cursorpositition, sondern scrollen innerhalb des Textes: Drücken Sie [Z],[T], um die aktuelle Zeile (die den Cursor enthält) ans obere Ende des Terminalfensters zu bewegen. [Z],[B] springt in die andere Richtung und verschiebt die Zeile an den unteren Fensterrand. Um die Zeile mit dem Cursor mittig anzuordnen, drücken Sie [Z],[Z]. Gerade letztere Kombination ist oft hilfreich, wenn man einen Überblick braucht, was vor und nach der aktuellen Zeile in der Datei steht.
Tipp: Vim: Nachträglich als Administrator speichern
Viele aktuelle Distributionen verzichten inzwischen darauf, ein Passwort für den Systemverwalter Root zu setzen und arbeiten stattdessen mit sudo[2]. Dieses Kommando stellen Sie immer vor einen Befehl, wenn Sie etwas mit administrativen Rechten bearbeiten möchten, und geben zur Authentisierung dann Ihr eigenes Kennwort ein. Haben Sie den Zusatzbefehl vergessen und öffnen im Vim eine systemweite Einrichtungsdatei, dann zeigt der Texteditor in der Statuszeile am unteren Rand eigentlich den Hinweis [Nur Lesen] oder [readonly] an. Wenn Sie den übersehen, die Datei trotzdem bearbeiten und dann speichern wollen, erscheint die Fehlermeldung E45: Die Option ‘readonly’ ist gesetzt (E45: ‘readonly’ option is set) – dann müssen Sie aber nicht von vorne anfangen oder die Änderungen in einer anderen Datei zwischenspeichern, Vim beenden und den Editor mit Root-Rechten neu starten.
Stattdessen nutzen Sie die Möglichkeit, aus Vim heraus externe Programme zu starten. Das funktioniert grundsätzlich so, dass Sie mit [Esc] in den Befehlsmodus wechseln, einen Doppelpunkt eingeben und ein Ausrufezeichen vor das Shell-Kommando stellen. So führt der folgende Aufruf beispielsweise ein einfaches ls im aktuellen Verzeichnis aus, ohne dass Sie den Editor beenden müssen:
:!ls
Um das Feature für das oben beschriebene Szenario zu nutzen, geben Sie in Vim anstelle von :w (für das “normale” Speichern) dieses Kommando ein:
:w !sudo tee %
Der Editor reicht den Inhalt der Datei an den Befehl sudo tee auf der Shell weiter. Das Prozentzeichen repräsentiert den aktuellen Dateinamen. Nachdem Sie alles mit [Eingabe] abgeschickt haben, geben Sie auf Aufforderung das Passwort ein (Abbildung 5), und Sie haben die geöffnete Datei mit Root-Rechten überschrieben.

Abbildung 5: “sudo” vor dem Bearbeiten vergessen? Kein Problem – hinter einem Ausrufezeichen dürfen Sie Shell-Kommandos aus Vim heraus aufrufen.
Glossar
-
Umgebungsvariablen
-
Die von der Shell verwalteten Variablen enthalten Einstellungen für Programme, Pfade zu Anwendungen usw. Die Shell richtet diese Umgebungsvariablen beim Start ein. Einige systemweite Einstellungen finden Sie in der Datei /etc/profile, persönliche gehören in die Datei ~/.bashrc oder ~/.profile.
-
Threads
-
Ein Thread (engl. “Faden”, “Strang”) ist eine hierarchische Abfolge von Diskussionsbeiträgen. In Foren, Blogs, aber auch in Mailinglisten treffen Sie häufig auf diese Threads, in der jedes Posting Bezug auf das vorhergehende nimmt. Die Folge ist eine Art Baumstruktur, welche die meisten Mailprogramme unter Linux darstellen können.
Infos
[1] Shell-Tipps, unter anderem zu “PATH”: Heike Jurzik, Know-how für die Kommandozeile”, EasyLinux 01/2012, S. 99 ff., http://www.easylinux.de/2012/01/099-shell-tipps/
[2] Artikel zu sudo: Heike Jurzik, “Doppelgänger”, EasyLinux 11/2004, S. 77 ff., http://www.easylinux.de/2004/11/077-guru-sudo/
