8.6 Nützliche Funktionen der Shell

Wie Sie wahrscheinlich in den obigen Beispielen bemerkt haben, kann die Befehlseingabe in Bash viel Schreibarbeit erfordern. Im Folgenden lernen Sie einige Funktionen von Bash kennen, die Ihre Arbeit erleichtern und Ihnen viel Tippaufwand ersparen können.

History

Standardmäßig merkt sich Bash die Befehle, die Sie eingeben. Diese Funktion wird History genannt. Sie können durch die Befehle navigieren, die zuvor eingegeben wurden, den gewünschten Befehl zur Wiederholung auswählen und dann erneut ausführen. Drücken Sie dazu wiederholt die Taste , bis der gewünschte Befehl an der Eingabeaufforderung angezeigt wird. Drücken Sie , um sich vorwärts durch die Liste der zuvor eingegebenen Befehle zu bewegen. Für die mühelose wiederholte Ausführung eines bestimmten Kommandos aus der Bash-History, geben Sie einfach den ersten Buchstaben des zu wiederholenden Kommandos ein und drücken Sie PgUp.

Sie können nun den ausgewählten Befehl ändern (indem Sie beispielsweise den Namen einer Datei oder einen Pfad ändern), bevor Sie den Befehl durch Drücken von Enter ausführen. Um die Kommandozeile zu bearbeiten, verschieben Sie den Cursor mit den Pfeiltasten an die gewünschte Position und beginnen die Eingabe.

Sie können auch einen bestimmten Befehl in der History suchen. Drücken Sie Ctrl+R, um eine inkrementelle Suchfunktion zu starten. Diese zeigt die folgende Eingabeaufforderung:

 (reverse-i-search)`': 

Geben Sie einfach einen oder mehrere Buchstaben des gesuchten Befehls ein. Jedes eingegebene Zeichen engt die Suche ein. Das entsprechende Suchergebnis wird rechts neben dem Doppelpunkt und Ihre Eingabe links neben dem Doppelpunkt gezeigt. Um ein Suchergebnis zu akzeptieren, drücken Sie Esc. Die Eingabeaufforderung übernimmt ihr normales Aussehen und zeigt den gewählten Befehl an. Sie können den Befehl nun bearbeiten oder direkt ausführen, indem Sie Enter drücken.

Ergänzung

Die Ergänzung eines Datei- oder Verzeichnisnamens nach der Eingabe der ersten Buchstaben ist eine weitere hilfreiche Funktion von Bash. Geben Sie hierzu die ersten Buchstaben einer vorhandenen Datei oder eines vorhandenen Verzeichnisses ein und drücken Sie Tab (Tabulator). Wenn der Dateiname bzw. Pfad eindeutig identifiziert werden kann, wird er sofort ergänzt und der Cursor springt zum Ende des Dateinamens. Anschließend können Sie die nächste Option des Befehls eingeben, falls erforderlich. Wenn der Dateiname oder Pfad nicht eindeutig identifiziert werden kann (da mehrere Dateinamen mit denselben Buchstaben beginnen), wird der Dateiname nur so weit ergänzt, bis mehrere Varianten möglich sind. Eine Auflistung dieser Varianten erhalten Sie, indem Sie ein zweites Mal die Taste Tab drücken. Anschließend können Sie die nächsten Buchstaben der Datei bzw. des Pfads eingeben und erneut die Ergänzungsfunktion durch Drücken von Tab aktivieren. Wenn Sie Dateinamen und Pfaden mithilfe von Tab ergänzen, können Sie gleichzeitig überprüfen, ob die Datei bzw. der Pfad, den Sie eingeben möchten, tatsächlich vorhanden ist (und Sie können sicher sein, dass er richtig geschrieben ist).

Platzhalter

Sie können ein oder mehrere Zeichen in einem Dateinamen durch einen Platzhalter zur Pfadnamenerweiterung ersetzen. Platzhalter sind Zeichen, die für andere Zeichen stehen. Bash kennt drei verschiedene Arten von Platzhaltern:

Platzhalter

Funktion

?

Stimmt genau mit einem zufälligen Zeichen überein

*

Stimmt mit einer beliebigen Zahl an Zeichen überein

[set]

Stimmt mit einem Zeichen aus der Gruppe überein, die in den eckigen Klammern angegeben wurde und hier durch die Zeichenfolge set dargestellt wird.

8.6.1 Beispiele für die Verwendung von History, Ergänzung und Platzhaltern

Die folgenden Beispiele illustrieren, wie Sie diese praktischen Funktionen von Bash nutzen können.

Wie bereits im Beispiel Abschnitt 8.3.1, Beispiele für das Arbeiten mit Dateien und Verzeichnissen sollte Ihr Shell-Puffer mit Befehlen gefüllt sein, die Sie mithilfe der History-Funktion abrufen können.

  1. Drücken Sie wiederholt , bis cd ~ angezeigt wird.

  2. Drücken Sie Enter, um den Befehl auszuführen und in Ihr Home-Verzeichnis zu wechseln.

    Standardmäßig enthält Ihr Home-Verzeichnis zwei Unterverzeichnisse, die mit demselben Buchstaben beginnen: Dokumente und Desktop.

  3. Geben Sie cd D ein und drücken Sie Tab.

    Nichts geschieht, da Bash nicht feststellen kann, in welches der Unterverzeichnisse Sie wechseln möchten.

  4. Drücken Sie erneut Tab, um die Liste möglicher Optionen zu sehen:

    tux@knox:~> cd D Desktop/   Documents/ tux@knox:~> cd D
  5. Die Eingabeaufforderung zeigt immer noch Ihre ursprüngliche Eingabe. Geben Sie den nächsten Buchstaben des Unterverzeichnisses ein, in das Sie wechseln möchten, und drücken Sie erneut Tab.

    Bash vervollständigt nun den Pfad.

  6. Sie können nun den Befehl mit Enter ausführen.

Angenommen, Ihr Home-Verzeichnis enthält eine Reihe von Dateien mit verschiedenen Dateinamenserweiterungen. Es enthält auch mehrere Versionen einer Datei, die Sie unter verschiedenen Dateinamen gespeichert haben ( myfile1.txt , myfile2.txt usw.). Sie möchten bestimmte Dateien gemäß ihren Eigenschaften suchen.

  1. Erstellen Sie zunächst einige Testdateien in Ihrem Home-Verzeichnis:

    1. Verwenden Sie den Befehl touch, den Sie bereits kennen, um mehrere (leere) Dateien mit verschiedenen Dateinamenserweiterungen zu erstellen, z. B. .pdf , .xml und .jpg.

      Sie können diesen Vorgang wiederholt (denken Sie an die Bash-History-Funktion) oder nur mit einem einzigen touch-Kommando durchführen: Fügen Sie einfach mehrere Dateinamen hinzu, die jeweils durch einen Leerschritt voneinander getrennt sind.

    2. Erstellen Sie mindestens zwei Dateien mit derselben Dateinamenserweiterung, z. B. .html.

    3. Geben Sie zum Erstellen mehrerer Versionen einer Datei das Folgende ein:

      touch myfile{1..5}.txt

      Dieser Befehl erstellt fünf fortlaufend nummerierte Dateien:

      myfile1.txt,…,myfile5.txt
    4. Zeigen Sie den Inhalt Ihres Home-Verzeichnisses an. Er sollte etwa wie folgt aussehen:

      -rw-r--r-- 1 tux users   0 2006-07-14 13:34 foo.xml
      -rw-r--r-- 1 tux users   0 2006-07-14 13:47 home.html
      -rw-r--r-- 1 tux users   0 2006-07-14 13:47 index.html
      -rw-r--r-- 1 tux users   0 2006-07-14 13:47 toc.html
      -rw-r--r-- 1 tux users   0 2006-07-14 13:34 manual.pdf
      -rw-r--r-- 1 tux users   0 2006-07-14 13:49 myfile1.txt
      -rw-r--r-- 1 tux users   0 2006-07-14 13:49 myfile2.txt
      -rw-r--r-- 1 tux users   0 2006-07-14 13:49 myfile3.txt
      -rw-r--r-- 1 tux users   0 2006-07-14 13:49 myfile4.txt
      -rw-r--r-- 1 tux users   0 2006-07-14 13:49 myfile5.txt
      -rw-r--r-- 1 tux users   0 2006-07-14 13:32 tux.png
             
  2. Wählen Sie mithilfe von Platzhaltern bestimmte Untergruppen von Dateien nach verschiedenen Kriterien aus:

    1. Um alle Dateien mit der Erweiterung .html aufzulisten, geben Sie Folgendes ein:

       ls -l *.html
    2. Um alle Versionen von myfile.txt aufzulisten, geben Sie Folgendes ein

      ls -l myfile?.txt

      Beachten Sie, dass Sie hier nur das Jokerzeichen ? verwenden können, da die Nummerierung der Dateien einstellig ist. Wenn Sie auch eine Datei mit dem Namen myfile10.txt hätten, müssten Sie den Platzhalter * verwenden, um alle Versionen von myfile.txt zu sehen (oder ein weiteres Fragezeichen hinzufügen, damit Ihre Zeichenfolge wie myfile??.txt aussieht).

    3. Um beispielsweise die Versionen 1 bis 3 und Version 5 von myfile.txt zu entfernen, geben Sie Folgendes ein:

      rm myfile[1-3,5].txt
    4. Prüfen Sie das Ergebnis mit

      ls -l

      Von allen myfile.txt -Versionen sollte nur myfile4.txt übrig sein.

Sie können natürlich auch mehrere Platzhalter in einem Befehl kombinieren. Im obigen Beispiel würde rm myfile[1-3,5].* dasselbe Ergebnis liefern wie rm myfile[1-3,5].txt, da nur Dateien mit der Erweiterung .txt vorhanden sind.

HINWEIS: Verwenden von Platzhaltern in Befehlen

Platzhalter in einem rm-Befehl können ausgesprochen nützlich sein, bergen jedoch auch ein gewisses Risiko, da unter Umständen mehr Dateien aus dem Verzeichnis gelöscht werden, als beabsichtigt war. Sie sehen, welche Dateien durch rm betroffen sind, indem Sie Ihre Platzhalterzeichenfolge zuerst mit ls anstelle von rm ausführen.