Arbeiten mit der Shell
In der Informatik bezeichnet man als Shell die Software, die den Benutzer in irgendeiner Form mit dem Computer verbindet. Zu den typischen Aufgaben gehören etwa die Bereitstellung von Kerneldiensten oder das Anbieten von Oberflächen für diverse Systemkomponenten. Der Begriff „Shell“ (englisch für „Hülle“ oder „Außenhaut“) stammt von Muschelschalen und soll entsprechend eine Oberfläche zwischen dem Anwender und dem Inneren (den Kernel-Komponenten) darstellen.
Bei Betriebssystemen gibt es zwei Arten von Shells, die Kommandozeile (englisch Command-Line Interface CLI) und die grafischen Benutzeroberflächen (englisch Graphical User Interface GUI). Jedoch wird umgangssprachlich meist der Kommandozeileninterpreter als Shell bezeichnet.
Weitere Informationen unter: http://de.wikipedia.org/wiki/Unix-Shell
Dieses Kapitel soll Ihnen zeigen, wie man sich die tägliche Arbeit mit der bash (Bourne-Again-Shell) erleichtern kann.
die erste Zeile
Schon an der ersten Zeile der Shell können viele Informationen abgelesen werden
[root@serverlein ~]# | | | |-> Rechte (#=root, $=user) | | |---> aktueller Pfad (~=Heimatordner) | |---------> Servername |-----------------> Username
Die Kommando-History
Das einfachste Feature der bash, das Ihnen etwas Arbeit abnimmt, sollten Sie unbedingt kennen: die Kommando-History. Sie speichert die zuletzt eingegebenen Befehle. Sie können diese abrufen und brauchen sie nicht erneut einzugeben, um sie wieder aufzurufen. Zudem bietet die bash die Möglichkeit, diese Befehle zu editieren.
Eine Übersicht über die in der History enthaltenen Befehle liefert Ihnen ein bloßer Aufruf von history. Durch Angabe einer Nummer bekommen Sie die letzten n Einträge angezeigt.
history 10Unerwünschte Einträge in der History können Sie über history -d <Nummer> aus der History-Liste löschen.
Nehmen wir einmal an, es wurde der Befehl find /usr/local/bin -name „Dateiname“ ausgeführt. Nun möchten Sie den gleichen Befehl mit einem anderen Dateinamen ausführen. Um nicht alles noch einmal eintippen zu müssen, können Sie durch die Cursor-Taste Nach oben den zuletzt eingegebenen Befehl in die Kommandozeile laden.
Durch erneutes Betätigen der Nach-oben-Taste lädt die bash wiederum den Befehl, der vor dem letzten aufgerufen wurde, in die Kommandozeile und so weiter – so einfach ist das. Mit der Nach-unten-Taste können Sie die History wieder vorwärts durchsuchen.
Strg + R
Bei diesem Verfahren wird Ihnen automatisch von der bash angezeigt, welcher Befehl ausgeführt werden würde, während Sie die Kommandozeile editieren:
`un': unameDer in der Eingabe befindliche Befehl wird aus dem Inhalt der Bash-History logisch erweitert.
Automatische Vervollständigung von Dateinamen
Ein ähnlich praktisches Feature wie die Kommando-History stellt die automatische Vervollständigung von Dateinamen dar. Sie wird in der bash durch die Tab-Taste angesteuert. Da unter Unix auch Programme Dateien darstellen, funktioniert dieses Feature natürlich auch mit diesen.
Bei der Nutzung der Tab-Taste sind allerdings zwei Fälle zu unterscheiden:
- Es ist nur eine passende Datei vorhanden.
- Es sind mehrere passende Dateien vorhanden.
Nur ein Kandidat
Für den ersten Fall erstellen wir ein Beispielverzeichnis, in dem wir eine Datei mit dem Namen abc.txt unterbringen. Listing 7.65 Beispielverzeichnis mit einer Datei erstellen
$ mkdir test $ touch test/abc.txt $ cd testVerwenden wir nun ein Programm wie /bin/ls, dem wir diese Datei als Parameter übergeben, müssen wir, da es nur eine Datei im Verzeichnis gibt, bloß die Tab-Taste betätigen, und die bash setzt uns den Dateinamen automatisch an die gewünschte Position in der Eingabe.
Versuchen Sie es einmal selbst: Wechseln Sie in das neue Verzeichnis, geben Sie ls und ein Leerzeichen ein, und drücken Sie die Tab-Taste. Die bash sollte nun den Dateinamen abc.txt automatisch in die Befehlszeile schreiben.
Mehrere Kandidaten
Nun erstellen wir im Verzeichnis noch eine Datei mit dem Namen xyz.txt. Wenn Sie das letzte Beispiel unter den neuen Bedingungen wiederholen, wird es nicht ohne weiteres funktionieren. Die bash weiß nicht von selbst, welche der beiden Dateien sie als Parameter übergeben soll. Der Trick funktioniert nun so, dass so viele Zeichen des Dateinamens eingegeben werden, bis es nur noch einen Dateinamen gibt, auf den die ersten Zeichen zutreffen – in diesem Fall genügt der erste Buchstabe der Datei (entweder ein »a« oder ein »x«), da kein Dateiname gleiche Zeichen enthält. Wird dann erneut die Tab-Taste gedrückt, vervollständigt die bash den Dateinamen wieder automatisch.
Gleiche Anfangsbuchstaben
Doch die bash kann Ihnen noch ein Stück Arbeit abnehmen. Nehmen wir an, es seien zwei Dateien abc und abd in einem Verzeichnis vorhanden. Sofern es sowieso keine Wahl zwischen den Zeichen gibt, bringt eine Betätigung der Tab-Taste immer diese Zeichen auf den Monitor. Drücken Sie also in solch einem Verzeichnis die Tab-Taste, so schreibt die bash Ihnen die beiden ersten Zeichen (da diese sowieso gleich sind und von Ihnen eingegeben werden müssten) auf den Bildschirm. Sie müssen anschließend nur noch ein »c« bzw. »d« eingeben.
Für den Fall, dass im Verzeichnis noch die Datei xyz vorhanden ist, müsste der erste Buchstabe wieder eingegeben werden, da nun wieder zwei Fälle eintreten könnten.
Doppel-Tab
Wenn mehrere Dateien vorhanden sind, können Sie die Tab-Taste auch zweimal betätigen, um sich während der Befehlseingabe eine Übersicht über die Dateien im Verzeichnis zu verschaffen. Durch dieses doppelte Betätigen liefert Ihnen die bash immer die nach Ihrer bisherigen Eingabe noch möglichen Dateiauswahlen.
Das bedeutet im Beispiel: Hätten Sie wieder die drei Dateien xyz, abc und abd im Verzeichnis, so würde Ihnen die bash zunächst alle drei auflisten. Wenn Sie dann ein »a« eingeben und die Tab-Taste drücken, gibt Ihnen die bash das »b« (die einzig sinnvolle Möglichkeit) auf dem Bildschirm aus. Wenn Sie dann wieder doppelt die Tab-Taste betätigen, gibt Ihnen die bash nun die beiden noch möglichen Dateinamen abc und abd aus.
Weiterhin ist das Tab-Taste »intelligent«: Am Anfang einer Shelleingabe ist nur ein ausführbares Kommando sinnvoll – entsprechend werden auch nur ausführbare Dateien bzw. Shellbuiltins vervollständigt.
Weitere Informationen
Einführung in die Shell: http://www.fibel.org/linux/lfo-0.6.0/node39.html
Shellprogramierung: http://www.linux-services.org/shell/