Automatische Komplettierung in der Kommandozeile

Die automatische Komplettierung ist eine sehr nützliche Funktion, die alle modernen shells (auch die bash) bieten. Ihre einzige Aufgabe ist, die Arbeit für den Anwender zu vereinfachen. Am besten schauen Sie sich das in einem Beispiel an.

Beispiel

Stellen Sie sich vor, in Ihrem persönlichen Verzeichnis gibt es diese Datei datei-mit-einem-langen-namen und Sie wollen sich diese Datei ansehen. Ausserdem gibt es noch die Datei datei_text im gleichen Verzeichnis. Sie wechseln also in Ihr persönliches Verzeichnis und tippen folgenden Befehl:

$ less da<TAB>

(d.h., Sie tippen less da und drücken dann die Taste TAB). Die shell wird nun die Befehlszeile für Sie erweitern:

$ less datei_

und Ihnen eine Liste von möglichen Erweiterungen anzeigen (das ist der Standard, der aber angepasst werden kann). Nun geben Sie die folgende Tastenfolge ein:

less datei_m<TAB>

und die shell wird die Befehlszeile komplettieren:

less datei-mit-einem-langen-namen

Nun drücken Sie nur noch auf Enter und Sie bekommen die Datei angezeigt.

Weitere Komplettierungs-Methoden

Die Taste TAB ist nicht die einzige Möglichkeit, die Komplettierung zu aktivieren, allerdings die meist genutzte. Im Allgemeinen wird das erste zu komplettierende Wort in einer Kommandozeile ein Befehl sein (nsl<TAB> wird zu nslookup erweitert) und alle weiteren Wörter normalerweise Dateinamen, falls das Wort nicht mit einem „magischen“ Zeichen beginnt (~, @ oder $). In diesen Fällen wird die shell versuchen, einen Usernamen, einen Maschinennamen oder eine Systemvariable mit entsprechendem Anfangszeichen zu finden[8]. Des weiteren gibt es das Anfangszeichen (/) für eine Datei und einen Befehl aus dem Befehlsspeicher (!).

Weitere zwei Möglichkeiten zur Aktivierung der Komplettierung sind die Sequenzen Esc-<x> und Strg+x<x>, wobei <x> eines der vorher erwähnten magischen Zeichen ist. Esc-<x> wird versuchen, eine eindeutige Komplettierung vorzunehmen. Falls das nicht möglich ist, wird die längste Zeichenfolge aus den möglichen Resultaten angezeigt. Ein Beep bedeutet entweder, dass die Auswahl nicht eindeutig ist oder dass es keine passende Auswahl gibt. Die Sequenz Strg+x <x> zeigt nur die möglichen Resultate an ohne eine Komplettierung vorzunehmen. Ein Druck auf TAB bedeutet das Gleiche wie die Eingabe von Esc-<x> und Strg+x<x> hintereinander, wobei das magische Zeichen aus dem Kontext hervorgeht.

Also ist eine Möglichkeit, alle Umgebungsvariablen aufzulisten, die Sequenz Strg+x $ in einer leeren Zeile einzugeben. Ein weiteres Beispiel: wenn Sie sich die „man page“ für den Befehl nslookup ansehen wollen, geben Sie einfach die Folge man nsl ein und anschließend Esc-!. Die Shell wird diese Sequenz automatisch auf man nslookup erweitern.



[8] Denken Sie daran, dass UNIX® zwischen Groß- und Kleinschreibung unterscheidet. Die Variablen HOME und home sind nicht identisch.