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: Aus “less” heraus einen Editor starten
Lesen Sie mit less eine Textdatei und fällt Ihnen ein Tippfehler ins Auge, dann müssen Sie den Pager nicht erst beenden, die Datei im Texteditor öffnen, die Stelle mit dem Vertipper suchen und korrigieren. Sie können stattdessen in less [V] drücken, um den Standardeditor zu starten. Auf vielen Distributionen, so auch unter Ubuntu, ist die Voreinstellung ein Link im Verzeichnis /etc/alternatives:
$ ls -l /etc/alternatives/editor lrwxrwxrwx 1 root root 13 Sep 1 11:41 /etc/alternatives/editor -> /usr/bin/joe
OpenSuse verwaltet den Standard-Editor nicht über einen Eintrag in /etc/alternatives/, und dort startet less automatisch den Standardeditor vi.
Sagt Ihnen die Voreinstellung nicht zu, legen Sie temporär über die Umgebungsvariable EDITOR ein anderes Programm fest, z. B.:
export EDITOR=vim
Drücken Sie nun [V], während Sie mit less in einer Datei blättern, öffnet der Vim diese genau an der Stelle, wo Sie sich auch in less befunden haben. Nachdem Sie den Editor beendet haben, landen Sie wieder im Dateibetrachter, den Sie mit [Q] verlassen.
Sie können die Festlegung des Editors auch dauerhaft einstellen, indem Sie den obigen export-Befehl in ~/.bashrc eintragen.
Tipp: Account-Informationen mit “passwd” auslesen
Das Kommandozeilentool passwd nehmen Sie als normaler Benutzer zu Hilfe, um das eigene Kennwort auf der Shell zu ändern. Dabei fordert Sie das Programm zunächst auf, das aktuelle Passwort einzutippen; danach geben Sie zweimal das neue ein. Als Systemverwalter können Sie so auch die Kennwörter anderer Accounts neu setzen. passwd kann aber noch mehr: Beispielsweise verrät es Ihnen, wann Sie Ihr Passwort zuletzt erneuert haben. Rufen Sie den Befehl dazu mit dem Schalter -S auf:
$ passwd -S huhn P 09/18/2014 0 99999 7 -1
Die Ausgabe sieht kryptisch aus, ist aber schnell aufgeschlüsselt: Der Benutzername im Beispiel ist huhn. Das zweite Feld zeigt an, ob das Passwort gültig ist (P). Steht hier stattdessen ein L, so ist das Kennwort gesperrt. NP hingegen verrät, dass es kein Passwort gibt. Im dritten Feld sehen Sie, wann der Benutzer das Kennwort zuletzt geändert hat. Das Datum folgt der amerikanischen Schreibweise und nennt zuerst den Monat, dann den Tag und schließlich das Jahr. Das Beispiel zeigt also, dass huhn zuletzt am 18. September 2014 das Kennwort neu gesetzt hat.
Aus Sicherheitsgründen können Sie diese Informationen immer nur für den eigenen Account auslesen. Nur der Systemverwalter erhält Auskunft über andere und hängt dazu deren Loginnamen an den Befehl an, also z. B. so:
sudo passwd -S petronella
Alternativ kann der Administrator auch den Status aller Accounts auf dem System einblenden und hängt dazu einfach den Parameter -a an.
Tipp: Verschachtelte Verzeichnisstrukturen
Mit mkdir (wie “make directory” = “erstelle Verzeichnis”) legen Sie einen Ordner an. Um gleich mehrere davon in einem Rutsch zu erzeugen, können Sie deren Namen an den Befehl anhängen:
mkdir uni nebenjob freizeit
Als Ergebnis erhalten Sie im aktuellen Verzeichnis drei neue Ordner namens uni, nebenjob und freizeit. Möchten Sie stattdessen ein Verzeichnis namens uni und darin einen Unterordner mathe erstellen, wären das normalerweise zwei Kommandos, die Sie hintereinander eingeben müssen:
mkdir uni mkdir uni/mathe
Der Tippaufwand bei diesem Beispiel ist gering – eine längere und weiter verschachtelte Liste allerdings braucht aber ihre Zeit. Das Kommando bringt daher den praktischen Schalter -p mit, über den Sie ganze Verzeichnisbäume in einem Befehl erzeugen:
mkdir -p uni/mathe/vorlesungen
Im aktuellen Verzeichnis liegt nun der Ordner uni, in diesem das Verzeichnis mathe und darin schließlich vorlesungen (Abbildung 1).

Abbildung 1: Mit dem Schalter “-p” erzeugt “mkdir” verschachtelte Verzeichnisstrukturen in einem Rutsch.
Tipp: Laufzeit von Kommandos messen: “time”
Ein Shell-Befehl braucht ungewöhnlich lange, und Sie wollen mit anderen Anwendern vergleichen, wie viel Zeit er auf den unterschiedlichen Systemen braucht? Dazu müssen Sie sich nicht mit einer Uhr neben den Linux-Rechner setzen und von Hand die Zeit stoppen. Stattdessen verwenden Sie das Kommando time, das die Laufzeit von Programmen misst. Um beispielsweise in Erfahrung zu bringen, wie lange die Suche mit find[1] nach JPEG-Dateien in Ihrem Home-Verzeichnis dauert, tippen Sie Folgendes:
$ time find ~ -name '*.jpg' -type f real 0m1.183s user 0m0.268s sys 0m0.370s
Vor dem find-Befehl steht die Aufforderung, zu messen. Dahinter folgt zunächst die Angabe, wo find suchen soll. Die Tilde ~ repräsentiert Ihr Home-Verzeichnis. Der nächste Parameter bestimmt, dass Sie nach Dateien mit der Endung .jpg Ausschau halten, und -type f fordert find dazu auf, nach Dateien (“f” wie englisch “files”) zu suchen. Als Ergebnis erhalten Sie drei Zeitangaben: real verrät die Gesamtzeit, die verstrichen ist, seit Sie den find-Befehl mit [Eingabe] abgeschickt haben. user repräsentiert die CPU-Zeit innerhalb der Anwendung (ohne Kernel, auf User-Ebene), und sys zeigt an, wie viel Zeit die CPU auf Kernel-Ebene (für dieses Kommando) verbraucht hat.
Tipp: Mehrere Befehle miteinander verknüpfen
Um mehrere Kommandos hintereinander in der Shell auszuführen, müssen Sie nicht das erste tippen, warten, bis es fertig ist, und dann das zweite eingeben. Es ist auch nicht nötig, zwei Terminalfenster zu öffnen und dort die einzelnen Befehle abzusetzen. Die Bash kennt mehrere Möglichkeiten, um Kommandos miteinander zu verbinden. Sind diese nicht voneinander abhängig (also: ist es für das zweite nicht unbedingt Voraussetzung, dass das erste erfolgreich ausgeführt wurde), können Sie das Semikolon als Bindeglied verwenden:
ls ~/Musik ; ls /etc
Der Aufruf zeigt zuerst den Inhalts des Ordners Musik/ im eigenen Home-Verzeichnis an, danach listet ls den Inhalt von /etc/ auf.
Dem zweiten ls-Kommando ist es egal, ob das erste erfolgreich verlaufen ist; daher ist das Semikolon hier in Ordnung. Darf ein zweiter Befehl nur dann starten, wenn der erste erfolgreich abgeschlossen wurde, verknüpfen Sie die beiden Aufrufe stattdessen mit zwei Kaufmanns-Und-Zeichen &&:
apt-get update && apt-get dist-upgrade
Das erste Kommando aktualisiert die Paketliste auf Debian-basierten Distributionen wie Ubuntu, Knoppix und Linux Mint, das zweite aktualisiert das System. Nur falls der erste Befehl fehlerfrei durchgelaufen ist, soll also der zweite in Aktion treten (Abbildung 2).

Abbildung 2: Mit zwei Kaufmanns-Und-Zeichen verknüpfte Kommandos arbeitet die Bash nacheinander ab. Allerdings muss dazu der erste Befehl fehlerfrei durchgelaufen sein, bevor der zweite in Aktion tritt.
Tipp: Ein Skript ausführbar machen
Oft lesen Sie in Anleitungen, dass Sie ein Skript ausführbar machen sollen, bevor Sie es beispielsweise zur Installation von Software starten können. Was genau damit gemeint ist, erklärt ein älterer Artikel über Zugriffsrechte, den Sie in unserem Archiv online finden [2]. Mit einem grafischen Dateimanager wie Nautilus oder Dolphin machen Sie Dateien ausführbar, indem Sie mit der rechten Maustaste auf diese klicken und sich den Eigenschaften zuwenden. Bei den Zugriffsrechten finden Sie dann für gewöhnlich eine Checkbox, die Sie aktivieren können. Schneller geht es jedoch auf der Shell mit dem Kommando chmod, das ebenfalls der Artikel unter [2] erklärt:
chmod +x skript.sh
Abbildung 3 zeigt ein Beispiel: Zunächst schaut der Benutzer mit ls -l nach, wie es um die aktuellen Rechte bestimmt ist, danach macht er das Skript mit chmod ausführbar, und der erneute ls-Aufruf zeigt die Veränderung.

Abbildung 3: Eine Datei machen Sie mit dem Befehl “chmod +x” ausführbar. Die beiden “ls”-Kommandos zeigen den Zustand vorher und nachher.
Tipp: Viele sichere Passwörter erzeugen
Ein gutes Kennwort hat mindestens acht Stellen, mischt Groß- und Kleinbuchstaben und enthält auch Sonderzeichen oder Zahlen. Gehen Ihnen die Ideen für die etlichen Onlineaccounts aus, oder wollen Sie viele gute Passwörter in einem Rutsch erzeugen, können Sie das Tool pwgen zu Hilfe nehmen. Ohne weitere Parameter aufgerufen, generiert es 160 Kennwörter (20 Zeilen à acht Spalten). Benötigen Sie nur ein einziges, hängen Sie einfach die Ziffer 1 an die Option -N an:
$ pwgen -N 1 Eep0nan3
Entsprechend erzeugt -N 2 zwei Passwörter. pwgen besitzt weitere Schalter, mit denen Sie die Verwendung von Zahlen (-0), Vokalen (-v) oder Großbuchstaben (-A) unterdrücken. Sie können pwgen auch dazu veranlassen, Zeichen auszuschließen, die sich in vielen Schriftarten ähnlich sehen, z. B. l (kleines L) und 1 (Eins) oder O und 0 (Null). Weitere Vorgaben sind: -y (mindestens ein Sonderzeichen), -n (mindestens eine Ziffer) und -c (mindestens ein Großbuchstabe).
Tipp: Inaktive Bash-Sitzung beenden
Gehören Sie auch zu den vergesslichen Menschen, die ab und zu ein Terminalfenster mit einer offenen SSH-Verbindung zu einem entfernten Rechner oder eine Root-Shell aus den Augen verlieren und es verschwitzen, sich korrekt abzumelden? Kein Problem. Die Bash kennt die UmgebungsvariableTMOUT, die Sie nach einer festgelegten Zeitspanne automatisch abmeldet. Als Option geben Sie die Anzahl der Sekunden an. Möchten Sie also gerne, dass die Shell den Dienst nach fünf Minuten Inaktivität quittiert, erreichen Sie das über Eingabe von:
export TMOUT=300
Ist die Zeit abgelaufen, beendet sich die Bash (Abbildung 4). Möchten Sie das Verhalten dauerhaft einstellen, öffnen Sie die Einrichtungsdatei ~/.bashrc in einem Texteditor Ihrer Wahl, tragen den export-Aufruf aus dem letzten Listing dort ein, speichern das Ganze und melden sich ab und wieder an. Alternativ lesen Sie die veränderte Konfiguration über das Kommando source ~/.bashrc neu ein.

Abbildung 4: Mit der Umgebungsvariable “TMOUT” veranlassen Sie die Bash dazu, Sie nach einer bestimmten Zeitspanne automatisch abzumelden.
Glossar
-
Umgebungsvariable
-
Diese Variablen enthalten Einstellungen für Programme, Pfade zu Anwendungen usw. Die Shell setzt viele dieser Umgebungsvariablen beim Start. Einige systemweite Einstellungen finden Sie in /etc/profile, persönliche gehören nach ~/.bashrc oder ~/.profile.
Infos
[1] Artikel zu find: Elisabeth Bauer, “Meisterdetektive”, EasyLinux 01/2004, S. 72 ff., http://www.easylinux.de/2004/01/072-find/
[2] Artikel zu Zugriffsrechten: Heike Jurzik, “Zutritt verboten!”, EasyLinux 12/2005, S. 78 ff., http://www.easylinux.de/2005/12/078-chmod/
