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: Was ist der Shell-Prompt?
Ein Terminalfenster oder eine der virtuellen Konsolen ([Strg]+[Alt]+[F1],[Strg]+[Alt]+[F2] usw.) nehmen Ihre Befehle am so genannten Shell-Prompt entgegen. Diese Eingabeaufforderung sieht je nach Distribution etwas anders aus. In der Regel zeigt der Standardprompt Ihren Benutzernamen, ein “@”-Zeichen, den Namen des Rechners (Hostname), einen Doppelpunkt und das aktuelle Verzeichnis. Unter Ubuntu sieht er beispielsweise so aus:
huhn@wily:~$
Der angemeldete Benutzer des Testrechners heißt huhn, der Rechner trägt den Namen wily. Die Tilde repräsentiert das Home-Verzeichnis, und hinter dem Dollarzeichen geben Sie nun ein Kommando ein. Wechseln Sie in einen anderen Ordner, ändert sich auch der Prompt:
huhn@wily:~$ cd /etc/apt/sources.list.d huhn@wily:/etc/apt/sources.list.d$ cd huhn@wily:~$ huhn@wily:~$ cd Downloads huhn@wily:~/Downloads$
Das erste cd-Kommando (“change directory” = “wechsle das Verzeichnis”) bringt Sie in den Ordner /etc/apt/sources.list.d, das zweite (ohne Angabe eines Ordnernamens) zurück ins Home-Verzeichnis. Von da aus geht es ins Verzeichnis Downloads.
Auf den meisten Linux-Systemen verändert sich der Prompt, wenn Sie als Systemverwalter root arbeiten. Oft (aber nicht immer) verschwindet der Benutzername, und anstelle des Dollarzeichens $ sehen Sie nun ein Rautezeichen #:
huhn@wily:~$ sudo -i [sudo] Passwort für huhn: root@wily:~#
Das letzte Listing zeigt wieder den Ubuntu-Testrechner. Der Benutzer huhn erlangt über den Befehl sudo -i Administratorrechte. (Der Schalter -i sorgt dafür, dass die Arbeitsumgebung des Benutzers root aktiviert und ins Home-Verzeichnis von root gewechselt wird.)
Tipp: Das Aussehen des Prompts verändern
Verantwortlich für den Look des Shell-Prompts ist die UmgebungsvariablePS1. Wie diese definiert ist, erfahren Sie nicht nur durch einen Blick in die Bash-Konfigurationsdatei ~/.bashrc, sondern auch ganz flott auf der Kommandozeile selbst, dazu stellen Sie dem Variablennamen ein Dollarzeichen voran:
huhn@wily:~$ echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
Das sieht auf den ersten Blick recht wüst aus – daher entschlüsseln wir das Ganze ein bisschen:
- Hinter \e[ bzw. \033[ stehen Steueranweisungen für die so genannten ANSI-Farbcodes. Vor dem Semikolon
;steht ein Attribut, z. B.00für normale oder01für fette Schrift. Danach darf eine Farbe folgen, z. B.32für Grün oder31für Rot.\033[00mist ebenfalls interessant: Damit schalten Sie zurück zu den Standardeinstellungen für den Text. (Tipp ## zeigt, wie Sie damit dem normalen Benutzer einen grünen Prompt und dem Administrator einen roten schenken.) - Dazu kommen Escape-Sequenzen wie
\u(Benutzername),\h(Hostname) oder\w(zeigt den vollen Pfad an).
Ein paar Beispiele machen die Arbeit mit diesen Anweisungen etwas verständlicher. Zu Testzwecken modifizieren wir die $PS1-Variable temporär in der aktuellen Shell, so dass sie nur für die aktuelle Sitzung gilt. Tipp ## zeigt, wie Sie die Änderungen dauerhaft speichern.
Tipp: Pfad, Benutzer- und Hostname in den Prompt
Fangen wir mit einem einfachen Befehl an. Um den Benutzer- und Rechnernamen aus dem Prompt zu verbannen und einen einfachen Prompt mit einem Dollarzeichen zu setzen, definieren Sie mit Hilfe von export die Variable $PS1 so:
huhn@wily:~$ export PS1='$ ' $
Beachten Sie das Leerzeichen nach dem Dollarzeichen, das für etwas mehr Platz sorgt. Den Ausdruck haben wir in einfache Anführungszeichen eingeschlossen, was bei Leer- oder Sonderzeichen immer eine gute Idee ist.
Das Dollarzeichen ist ein bisschen dürftig – daher nehmen wir jetzt wieder den Benutzernamen und den Rechnernnamen (getrennt durch ein @-Zeichen) dazu:
$ export PS1='\u@\h$ ' huhn@wily$
Jetzt fehlt noch der Aufenthaltsort, den der Prompt in dieser Konfiguration verschweigt. Sie können dafür entweder \w oder \W verwenden. Der erstgenannte Ausdruck zeigt den vollen Pfad an (z. B. /etc/apt), der zweite nur den Namen des Verzeichnisses (z. B. apt). Diese Einstellung ist dann sinnvoll, wenn Sie auf einem System arbeiten, das viele lange Pfadnamen hat.
Tipp: Uhrzeit und Datum für den Prompt
Mit den Escape-Sequenzen können Sie auch die Uhrzeit zum Prompt hinzufügen. Dabei entscheiden Sie, ob Sie die Zeit im 24-Stunden-Format (HH:MM:SS, \t), im 12-Stunden-Format mit Sekunden (HH:MM:SS, \T) oder ohne Sekunden (HH:MM, \@) sehen wollen. Damit das Ganze etwas übersichtlicher wird, setzen Sie noch eckige Klammern um die Zeit (Abbildung 1).
Auch für das Datum gibt es eine Escape-Sequenz: \d erzeugt Ausgaben wie beispielsweise Fr Jan 29. Kombinieren Sie das Ganze, um Datum und Uhrzeit zu sehen:
$ export PS1='[\d, \t] \u@\h \w$ ' [Fr Jan 29, 11:03:48] huhn@wily ~$
Tipp: Benutzer in Grün, Root in Rot
Die in Tipp 2 erwähnten ANSI-Farbcodes können Sie dazu verwenden, dem Prompt eine Farbe zu verpassen. Dieser Tipp zeigt, wie Sie den Benutzerprompt grün und den Prompt für root rot einfärben. Zum Einsatz kommen Steueranweisungen, die Sie in \[\e[ und \] einschließen. Um den Prompt für den Benutzer in Grün anzuzeigen, leiten Sie zunächst mit \[ die Folge von Steuerzeichen ein, dann definieren Sie die Farbe (\e[01;32m) und beenden die Steuerzeichen-Sequenz mit \]. Es folgen Angaben zum Benutzer- und Rechnernamen (\u@\h), und dann schalten Sie mit \[\e[0m\] zurück zu den Standardeinstellungen. Das aktuelle Arbeitsverzeichnis und das Dollarzeichen erscheinen wieder in der Standardfarbe:
export PS1='\[\e[01;32m\]\u@\h\[\e[00m\]:\w\$ '
Ähnlich gehen Sie vor, wenn der Prompt für root in Rot erscheinen soll. Anstelle von \e[01;32m (grün) schreiben Sie diesmal \e[01;31m (rot):
export PS1='\[\e[01;31m\]\h\[\e[00m\]:\w\$ '
Abbildung 2 zeigt die Befehle und ihre Effekte im Terminal.
Tipp: Neuen Shell-Prompt dauerhaft speichern
Gefallen Ihnen die Prompt-Zaubereien aus den letzten Tipps so gut, dass Sie die Einstellungen dauerhaft speichern möchten, dann tragen Sie die entsprechende export-Anweisung in die Bash-Konfigurationsdatei ~/.bashrc ein. Diese bearbeiten Sie in einem Texteditor Ihrer Wahl. Suchen Sie nach den Voreinstellungen für PS1, kommentieren Sie die Zeile durch ein vorangestelltes Rautezeichen # aus, und tragen Sie Ihre eigene Definition für PS1 ein. Anschließend melden Sie sich ab und wieder an, damit die Änderungen greifen. Alternativ können Sie die veränderte Konfiguration mit dem Kommando source ~/.bashrc aktivieren.
Tipp: Lästige “^M”-Zeichen mit Vim entfernen
Sie erhalten ab und zu Textdateien, die jemand unter Windows erzeugt hat, und wollen diese mit dem Texteditor Vim unter Linux bearbeiten? Eigentlich kein Problem, wenn da nicht oft diese lästigen ^M-Zeichen am Zeilenende wären. Sie entstehen, da Windows für den Zeilenumbruch die Steuerzeichen CR/LF (Carriage Return, Line Feed) verwendet. Unix-Systeme und damit auch Linux und OS X verwenden ausschließlich LF und können mit den zusätzlichen CR-Zeichen nichts anfangen – diese erscheinen als ^M ([Strg]+[M]) im Vim.
Bevor Sie alle Zeilenenden einzeln und von Hand bearbeiten und das ^M löschen, greifen Sie besser zu einem Vim-Automatismus: Mit dem Suchen-und-Ersetzen-Kommando werden Sie die Zeichen flott los. Wechseln Sie zunächst mit [Esc] in den Kommandomodus. Danach geben Sie einen Doppelpunkt ein, gefolgt von %s, was so viel heißt wie: Suche im gesamten Dokument. Es folgt ein Schrägstrich / und dann das Suchmuster. Das ^M geben Sie über die Tastenkombination [Strg]+[V],[Strg]+[M] ein. Es folgen wieder ein Schrägstrich und der Ausdruck zum Ersetzen; letzterer bleibt hier leer. Nach einem weiteren Schrägstrich steht die Anweisung g, was bedeutet: Erfasse alle Vorkommen pro Zeile. Zusammengesetzt sieht das so aus:
:%s/^M//g
Abbildung 3 zeigt ein Dokument mit “^M”-Zeichen und dem Vim-Befehl am unteren Rand. Schicken Sie das Kommando mit [Eingabe] ab, zeigt der Texteditor an, wie oft er den Ausdruck ersetzt hat, z. B. 130 Ersetzungen auf 130 Zeilen.

Abbildung 3: Mit diesem Suchen-und-Ersetzen-Kommando werden Sie im Texteditor Vim die lästigen “^M”-Steuerzeichen los.
Tipp: Zwei Dateien in einer Vim-Sitzung öffnen
Sie bearbeiten im Texteditor eine Datei und möchten diese mit einer anderen vergleichen? Dazu müssen Sie kein zweites Terminalfenster öffnen und diese nebeneinander anordnen. Nutzen Sie stattdessen einfach das Kommando :vnew dateiname, um die zweite Datei im vertikal geteilten Fenster zu öffnen (Abbildung 4). Möchten Sie das Fenster lieber horizontal teilen, dann geben Sie stattdessen :new dateiname ein.

Abbildung 4: Im Texteditor Vim können Sie zwei Dateien gleichzeitig bearbeiten und diese nebeneinander anordnen.
Um die Größe der jeweiligen Bereiche anzupassen, stehen verschiedene Befehle zur Verfügung:
- Handelt es sich um ein vertikal geteiltes Fenster, verwenden Sie [Strg]+[W],[<] bzw. [Strg]+[W],[Umschalt]+[<] (“>”), um die Größe zu ändern.
- Ist das Fenster hingegen horizontal geteilt, gelten die Shortcuts [Strg]+[W],[+] und [Strg]+[W],[-].
In beiden Fällen sorgt [Strg]+[W],[Umschalt]+[0] (“=”) dafür, dass beide Bereiche wieder dieselbe Größe erhalten. Ebenfalls praktisch ist der Wechsel von rechts und links bzw. von oben und unten: [Strg]+[W],[R] tauscht die beiden Hälften. Mit [Strg]+[W],[W] wechseln Sie in den anderen Bereich, und mit :q schließen Sie den aktuellen Teil.
Tipp: Die Fenstergröße herausfinden
Wie groß ist das Terminalfenster? Und wie viel Platz benötigt der gerade geöffnete Firefox? Das Kommando xwininfo verrät es. Während Ubuntu das Werkzeug in der Voreinstellung installiert hat, rüsten Sie es unter OpenSuse über den Paketmanager nach; es befindet sich im Standard-Repository.
Öffnen Sie ein Terminal und geben xwininfo ohne weitere Parameter ein. Der Mauszeiger verwandelt sich nun in eine Art Fadenkreuz, und das Tool fordert Sie dazu auf, in das Programmfenster zu klicken, zu dem Sie Informationen wünschen (“Please select the window about which you would like information by clicking the mouse in that window.”). Danach gibt xwininfo allerhand Auskünfte (Abbildung 5). Unter Width finden Sie Angaben zur Breite, und Height zeigt die Höhe an. Das Firefox-Fenster aus Abbildung 5 ist also 1025 x 721 Pixel groß.

Abbildung 5: Das kleine Tool “xwininfo” verrät unter anderem, wie groß ein bestimmtes Programmfenster ist.
Tipp: Treffer für “grep” zählen
Das Programm grep durchsucht Textdateien nach bestimmten Zeichenketten und Mustern, die Sie beim Aufruf definieren. Um beispielsweise nach dem Wort Terminal in einer Datei namens shell-tipps.txt zu fahnden, geben Sie das folgende Kommando ein:
$ grep Terminal shell-tipps.txt Wie groß ist das Terminalfenster? Und wie [...] Öffnen Sie ein Terminal und geben [...]
In der Ausgabe erscheinen alle Treffer in ihrem jeweiligen Kontext. Bei einer so kurzen Liste wie im letzten Beispiel haben Sie die Vorkommen schnell gezählt. Handelt es sich allerdings um einen langen Text, wäre es etwas mühsam, die einzelnen Trefferzeilen durchzugehen. Verwenden Sie in einem solchen Fall einfach den Schalter -c beim Aufruf, und grep zeigt nur die Anzahl der Treffer an (Abbildung 6) – dabei zählt das Tool allerdings nicht die Gesamttreffer, sondern die Zeilen mit mindestens einem Treffer. Taucht der Suchbegriff mehrfach in einer Zeile auf, erhöht sich die Trefferzahl nur um 1. Für die Gesamttreffer nutzen Sie zusätzlich das Tool fmt, das bei geeigneten Parametern den Text vor der Suche so umbricht, dass jedes Wort in einer eigenen Zeile landet. Mit
$ fmt -w1 shell-tipps.txt | grep -c Terminal 10
finden Sie nun die korrekte Zahl der Treffer.
Glossar
-
Umgebungsvariable
-
Diese konfigurierbaren Variablen enthalten Einstellungen für Programme, Pfade zu Anwendungen usw. Die Shell liest diese Umgebungsvariablen beim Start aus. Einige systemweite Einstellungen finden Sie in der Datei /etc/profile, persönliche gehören in die Datei ~/.bashrc oder ~/.profile.


