Erfahrene Linux-Nutzer schwören auf flexible Kommandozeilentools, mit denen sie manche Aufgabe schneller als in grafischen Programmen bewältigen. Wir stellen die wichtigsten Anwendungen vor, um auch Einsteiger zu einem Ausflug in die Shell zu ermutigen.
Tipp: Dateien zählen mit “wc”
Wer nicht von Hand zählen möchte, wie viele MP3-Dateien in einem Verzeichnis liegen, nimmt das Tool wc (englisch “word count”) zur Hilfe. Das Programm ermittelt die Anzahl der Zeilen, Wörter oder Zeichen (Bytes) in Dateien und schreibt die Werte auf die Standardausgabe. Der Parameter -l sorgt dafür, dass wc lediglich die Zeilenzahl ausgibt, und genau diese Option machen Sie sich zunutze, um Dateien zu zählen.
Dazu kombinieren Sie zwei Kommandos: Mit ls listen Sie alle Dateien auf, die auf “.mp3” enden. Zusätzlich verwenden Sie die ls-Option -1 (mit der Ziffer Eins, nicht mit einem kleinen L), um die Ausgabe einspaltig zu formatieren:
$ ls -1 *.mp3 Goodbye_to_Ireland_-_McKillops.mp3 Splendid_Isolation_-_Mrs_Lawrie.mp3 Palmers_Gate_-_Sailing_Into_Walpoles_March.mp3 Father_O_Flynn_-_Kesh_Jig.mp3 Follow_Me_Up_To_Carlow_And_The_Basket_Of_Turf.mp3 Julie_Delaney_-_Wise_Maid.mp3 …
Anschließend leiten Sie über ein Pipe-Zeichen (Tastenkombination [AltGr]+[<]) die Ausgabe an wc weiter und beauftragen das Tool damit, die Zeilen zu zählen:
$ ls -1 *.mp3 | wc -l
24
Genauso funktioniert das auch für andere Dateitypen, indem Sie *.mp3 z. B. durch *.png, *.jpg oder *.avi ersetzen.
Tipp: Prozesse suchen mit “ps” und “grep”
Laufende Prozesse betrachten Sie im Terminal mit dem Kommando ps. Ein älterer Artikel aus dem Jahr 2006 verrät Tipps und Tricks zu diesem Programm [1] und zeigt auch, wie Sie alle gerade laufenden Prozesse einblenden. Das Listing Ausgabe von “ps aux” verrät, was gerade auf dem System los ist.
Ausgabe von “ps aux”
$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 1984 540 ? Ss May31 0:06 init [2] root 2 0.0 0.0 0 0 ? S May31 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S May31 0:07 [migration/0] root 4 0.0 0.0 0 0 ? S May31 0:46 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S May31 0:00 [watchdog/0] …
Um in dieser langen Ausgabe nach einem Prozess zu suchen, leiten Sie die Ausgabe, wie im vorigen Tipp gezeigt, über das Pipe-Zeichen an das Kommando grep weiter, das nach Zeichenketten sucht. Das Listing Nach “sshd” in “ps”-Ausgabe suchen zeigt einen Fahndungsaufruf nach dem Secure-Shell-Daemon sshd und meldet Erfolg – der SSH-Server läuft in diesem Beispiel also.
Nach “sshd” in “ps”-Ausgabe suchen
$ ps aux | grep sshd root 3271 0.0 0.0 5296 688 ? Ss May31 0:05 /usr/sbin/sshd huhn 8471 0.0 0.0 3764 616 pts/6 D+ 18:05 0:00 grep sshd
Tipp: Bash: Automatische Abmeldung (Timeout) einrichten
So genannte Umgebungsvariablen definieren das Standardverhalten der Shell und der darin laufenden Programme. Viele dieser Variablen setzt Linux schon beim Start. Dazu gehören z. B.
- HOME: Das ist der Pfad zum persönlichen Verzeichnis.
- PATH: Enthält den Suchpfad. Die Shell durchsucht alle hier angegebenen Verzeichnisse nach ausführbaren Dateien, sofern der Benutzer beim Start nicht den vollen Pfad angibt.
Abbildung 1 zeigt, wie Sie gesetzte Variablen mit dem echo-Kommando anzeigen. Ein Artikel aus unserer Schwesterzeitschrift LinuxUser [2] verrät mehr zu den Umgebungsvariablen eines Linux-Systems und erklärt, wie Sie damit Ihr “Zuhause” einrichten.
Andere Variablen setzen Sie selbst und beeinflussen damit die Arbeitsweise von Programmen und sogar jene der Shell selbst. Mit der praktischen Variable TMOUT richten Sie ein Auto-Logout ein. Das ist vor allem praktisch für Benutzer, die per SSH auf einem anderen System angemeldet sind und vergessen, sich wieder auszuloggen. Zusätzlich geben Sie an, nach wie vielen Sekunden Inaktivität sich die Shell automatisch beendet. Der folgende Befehl sorgt dafür, dass Sie nach einer Minute abgemeldet werden:
export TMOUT=60
Wie immer gilt: Wenn Sie das Verhalten dauerhaft einstellen möchten, tragen Sie diese Zeile in die Bash-Einrichtungsdatei (.bashrc im eigenen Home-Verzeichnis) ein. In einer laufenden Sitzung lesen Sie die Konfiguration mit diesem Kommando neu ein:
source ~/.bashrc
Für neu gestartete Shell-Sitzungen ist dies nicht erforderlich, da die Bash ihre Konfiguration selbst einliest.
Tipp: Gegen die Tippfehler mit “shopt”
Manchmal ist einfach der Wurm drin und ein Knoten in den Fingern. Wer oft lange Namen beim Verzeichniswechsel auf der Shell tippt (und dabei nicht auf die Tab-Completion zurückgreift), hat sich vielleicht schon über Fehlermeldungen wie die folgende geärgert:
$ cd /usr/share/dco/gnome-utils bash: cd: /usr/share/dco/gnome-utils: Datei oder Verzeichnis nicht gefunden
Eine Autokorrektur für solche kleineren Vertipper wäre doch praktisch. Netterweise hat die Bash so etwas schon eingebaut – Sie müssen das Feature nur noch aktivieren:
$ shopt cdspell cdspell off $ shopt -s cdspell; shopt cdspell cdspell on
Zunächst zeigen Sie mit dem Befehl shopt die aktuelle Einstellung an. Die Erweiterung für den cd-Befehl zum Verzeichniswechsel ist nicht aktiviert (off). Anschließend schalten Sie das Feature mit der Option -s (set, setzen) ein und überprüfen, ob die Funktion nun auf on steht. Jetzt ist es Zeit für einen Tippfehler-Test:
huhn:~$ cd /usr/share/dco/gnome-utils /usr/share/doc/gnome-utils huhn:/usr/share/doc/gnome-utils$ _
Wie Sie sehen, hat die Funktion die vertauschten Buchstaben selbstständig korrigiert, und Sie sind im richtigen Ordner gelandet. Um das Feature wieder zu deaktivieren, verwenden Sie die Option -u (unset, zurücksetzen), tippen also:
shopt -u cdspell
Den Befehl shopt -s cdspell können Sie übrigens ebenfalls in die Konfigurationsdatei ~/.bashrc eintragen und damit die Fehlerkorrektur für künftige Shell-Sitzungen aktivieren.
Tipp: Gegen das vorzeitige Ende: “IGNOREEOF”
Manchmal sind die Finger schneller als der Kopf, und man hat sich mit [Strg]+[D] schneller aus der laufenden Sitzung verabschiedet als man wollte. Eine Umgebungsvariable (siehe Tipp ##) verhindert vorschnelles Ausloggen und definiert, dass Sie insgesamt zweimal [Strg]+[D] tippen oder exit eingeben müssen:
$ export IGNOREEOF=1 $ exit $ Benutze "exit" um die Shell zu verlassen. $ exit
Erst nach dem zweiten Logout-Befehl schließt sich nun das Terminal. Setzen Sie die Zahl herauf, z. B. auf 3, müssen Sie insgesamt dreimal bestätigen, dass Sie die Sitzung schließen möchten – das wäre als Sicherheitsabfrage aber bestimmt übertrieben.
Tipp: Kopierorgien mit langen Dateinamen vereinfachen
Auch dieser Tipp ist wieder für tippfaule Benutzer, die nicht mit der Tab-Completion arbeiten. Die Bash hilft mit einem einfachen Trick dabei, Dateien mit langen und komplizierten Namen zu kopieren. Um beispielsweise von einer Datei namens dernameistdoofundlang eine Kopie dernameistdoofundlang.bak anzulegen, tippen Sie einfach:
cp dernameistdoofundlang{,.bak}
Die Bash expandiert Dinge in geschweiften Klammern und erstellt so eine Kopie mit der Dateiendung .bak.
Tipp: Manpages zu bestimmten Themen finden
Oft ist guter Rat teuer, wenn Sie sich eine Manpage zu einem Befehl anschauen möchten, sich aber nicht genau an den Namen des Kommandos erinnern. Hier hilft apropos aus der Klemme. Rufen Sie den Befehl zusammen mit einem Thema auf, sehen Sie eine Auflistung aller Kommandos, in deren Beschreibung das Wort vorkommt (Abbildung 2). Dazu durchsucht apropos die Indexdatenbank der Manpage-Kurzbeschreibungen.

Abbildung 2: Den Befehl “apropos” geben Sie mit einem Suchbegriff als Argument ein, um Manpages zu bestimmten Themen aufzulisten.
Ist die Liste der Manpages zu lang, leiten Sie das Kommando über ein Pipe-Zeichen an den Pager less weiter und betrachten die Ausgabe so seitenweise (apropos info | less). Mit den Pfeiltasten blättern Sie hoch und runter, und über [Q] verlassen Sie less.
Tipp: Unterscheiden sich zwei Textdateien voneinander?
Das Programm diff vergleicht zwei Textdateien miteinander und schreibt die Unterschiede ins Terminal. Sie können das praktische Tool auch einfach dazu verwenden, festzustellen, ob sich zwei Dateien voneinander unterscheiden. Dazu verwenden Sie die Option -q:
$ diff -q text1 text2
Wenn Sie danach wieder den Eingabeprompt sehen, sind die beiden Dateien identisch. Andernfalls informiert diff:
Dateien text1 und text2 sind verschieden.
Tipp: Case sensitivity abschalten
Viele Kommandozeilenprogramme bringen eine Option namens -i mit, die dafür sorgt, dass das Tool nicht zwischen Groß- und Kleinschreibung unterscheidet. Das sind im Wesentlichen Befehle, die mit Textdateien arbeiten. Verwenden Sie den Parameter bei diff (siehe voriger Tipp), behandelt das Programm Worte wie etwa “Huhn”, “HUHN” oder “huhn” als dieselbe Zeichenkette und zeigt die diversen Schreibweisen nicht als gefunde Unterschiede an. Auch grep[3] bringt einen solchen Schalter mit: Verwenden Sie
grep -i <I>begriff<I> <I>datei.txt<I>
achtet grep bei der Suche nicht auf Groß- und Kleinschreibung.
Der Befehl locate dateiname durchforstet das System nach Dateinamen, welche die genannte Zeichenfolge im Pfad oder im Namen selbst haben. Wissen Sie nicht genau, ob die Datei große oder kleine Buchstaben im Namen trägt, verwenden Sie locate -i dateiname.
Der Pager less bietet gleich zwei Optionen für die Behandlung von Groß- und Kleinschreibung in Textdateien. Rufen Sie das Programm über less -i datei.txt auf und suchen mit der Tastenkombination [Umschalt]+[7] (also /) nach einem Begriff, ignoriert less zunächst die Schreibweise. So findet /huhn wieder alle Schreibweisen: “Huhn”, “HUHN” oder “huhn”. Anders sieht es aus, wenn die Suchanfrage einen Großbuchstaben enthält. Tippen Sie /HUHN, zeigt der Pager nur das Wort “HUHN” als Treffer an. Um die Case sensitivity für less komplett abzuschalten, rufen Sie das Tool mit der Option -I auf: Dann gibt es beim Suchen gar keine Unterschiede mehr.
Tipp: Bash-Prompt mit Uhrzeit (24-Stunden-Format)
Die Eingabeaufforderung der Shell können Sie ganz an Ihre eigenen Wünsche und Bedürfnisse anpassen. Für das Aussehen des Prompts ist die Umgebungsvariable PS1 zuständig (siehe Tipp ##). Der Standardprompt enthält in der Regel den Benutzer- und den Rechnernamen, gefolgt vom aktuellen Arbeitsverzeichnis, also z. B.:
huhn@ubuntu10:~$
Möchten Sie zusätzlich die aktuelle Uhrzeit im 24-Stunden-Format vor der Eingabeaufforderung sehen, geben Sie den folgenden Befehl ein:
export PS1="[\t] \u@\h:\w$ "
Bei den Angaben \t, \u, \h und \w handelt es sich um so genannte Escape-Sequenzen. Dabei steht \t für die Uhrzeit im 24-Stunden-Format, \u für den Namen des angemeldeten Benutzers, \h für den Hostnamen bis zum ersten Punkt und \w für das aktuelle Arbeitsverzeichnis. Abbildung 3 zeigt, wie der neue Prompt dann aussieht.
Abbildung 3: Den Shell-Prompt können Sie ganz individuell gestalten. Zuständig für das Aussehen ist die Variable “PS1”.
Glossar
-
Tab-Completion
-
Die Tabulatortaste spart beim Arbeiten auf der Shell Tipparbeit, da sie Ihre Eingaben ergänzt, sobald etwas eindeutig ist: Um mit dem Befehl ls ins Verzeichnis /etc/X11/ hineinzuschauen, reicht in der Regel
ls /e, und dann drücken Sie [Tab]. Die Bash vervollständigt den Namen zu “/etc/”. Gibt es mehrere Treffer, piept es beim Drücken der Tabulatortaste; wenn Sie diese danach noch einmal betätigen, sehen Sie alle möglichen Treffer.
Infos
[1] Guru-Training zur Prozesskontrolle: Heike Jurzik, “Prozessen mit der Axt kommen”, EasyLinux 09/2006, S. 127 ff., http://www.easylinux.de/2006/09/127-guru-kill/
[2] Artikel zu Umgebungsvariablen: Heike Jurzik, “Bequem eingerichtet”, LinuxUser 05/2007, S. 88 ff., https://www.linux-community.de/Internal/Artikel/Print-Artikel/LinuxUser/2007/05/Bequem-eingerichtet
[3] Artikel zu grep: Elisabeth Bauer, “Text fischen”, EasyLinux 10/2004, S.74 ff., http://www.easylinux.de/2003/10/074-grep/


