next up previous contents index
Next: Der Kommandozeilenspeicher (history) Up: bash Previous: Interaktive Shell und

Der Kommandozeileneditor

   Alle Tastatureingaben, die zeilenweise erfolgen, können mit bestimmten Steuerzeichen ``editiert'' werden. Mit dem Steuerzeichen CONTROL-U kann normalerweise die komplette Zeile gelöscht werden, CONTROL-C bricht die Eingabe ab, CONTROL-Dgif steht für das Dateiende ( EOF, End Of File), also für das Ende der interaktiven Eingabe insgesamt, CONTROL-H oder BACKSPACE löscht das letzte Zeichen.

Diese primitiven Funktionen werden vom Terminaltreiber des Kernels im ``cooked''-Modus direkt angeboten. Die bash bietet darüber hinaus einen Kommandozeileneditor, der in Umfang und Funktion den Standardeditoren vi und emacs nachempfunden ist.gif Sie können die Funktionen des Kommandozeileneditors Ihren eigenen Bedürfnissen anpassen (-> Seite gif). Zwischen den Standardbelegungen kann mit dem set-Shellkommando (-> Seite gif) umgeschaltet werden. Normalerweise arbeitet der Kommandozeileneditor im emacs-Modus.

Die Editorbefehle im emacs-Modus benutzen zwei Sondertasten: die CONTROL- und die Metataste. Die CONTROL-Taste ist auf der PC-Tastatur in der linken unteren Ecke (manchmal STRG). Eine Metataste ist unter diesem Namen in der Regel nicht vorhanden. Meistens wird die linke ALT-Taste mit dieser Funktion belegt. Wenn das nicht der Fall ist, kann die ESCAPE-Taste (ESC) benutzt werden. Während CONTROL und ALT gemeinsam mit dem Buchstaben gedrückt werden müssen, wird ESC vor dem Buchstaben gedrückt (zwei Anschläge).gif

In den Erklärungen wird CONTROL mit ` C-' und die Metataste mit ` M-' gekennzeichnet. In manchen Fällen müssen CONTROL und ALT zusammen gedrückt werden, das wird dann durch M-C- symbolisiert.

Positionieren der Einfügemarke
Zeilenanfang (C- a)
setzt die Einfügemarke an den Anfang der Kommandozeile.
( beginning-of-line)
Zeilenende (C- e)
setzt die Einfügemarke an das Ende der Kommandozeile. ( end-of-line)
Zeichen vorwärts (C- f)
setzt die Einfügemarke ein Zeichen nach rechts. Diese Funktion ist auch mit der rechten Pfeiltaste im Cursorblock erreichbar. ( forward-char)
Zeichen rückwärts (C- b)
setzt die Einfügemarke ein Zeichen nach links. Diese Funktion ist auch mit der linken Pfeiltaste im Cursorblock erreichbar. ( backward-char)
Wort vorwärts (M- f)
setzt die Einfügemarke an das Ende des aktuellen Wortes oder ein Wort weiter (wenn die Einfügemarke zwischen zwei Wörtern steht). ( forward-word)
Wort rückwärts (M- b)
setzt die Einfügemarke an den Anfang des aktuellen Wortes oder des vorhergehenden Wortes (wenn die Einfügemarke zwischen zwei Wörtern steht). ( backward-word)
Bildschirm löschen (C- l)
löscht alle Zeichen vom Bildschirm. Die Einfügemarke erscheint danach auf der ersten Zeile. ( clear-screen)

Automatische Erweiterung von Kommando- und Dateinamen
 
erweitern (TAB)
  versucht die bis zu diesem Editorbefehl geschriebene Kommandozeile sinnvoll zu ergänzen. Das geschieht, indem die Zeichenfolge des letzten Wortes bis zur Einfügemarke mit den Namen von Kommandos, Dateien und Verzeichnissen verglichen und das Wort so weit ergänzt wird, wie eine eindeutige Zuordnung möglich ist. Das erste Wort eines einfachen Kommandos wird dabei nur mit den Kommandonamen in den PATH-Verzeichnissen verglichen, die   weiteren Wörter eines einfachen Kommandos werden dagegen nur noch mit Datei- und Verzeichnisnamen im aktuellen Verzeichnis (Arbeitsverzeichnis) verglichen. In einigen Fällen (z. B. bei Pipelines) werden auch die ersten Wörter der folgenden Kommandos auf diese Weise richtig zugeordnet.

Probieren Sie diese Funktion des Kommandozeileneditors einfach aus. Sie werden schnell merken, wie mächtig und vielseitig sie ist.

Wenn ein Wort mehreren bekannten Namen zugeordnet werden kann, wird es nur so weit ergänzt, wie sich die Namen nicht unterscheiden. Wenn dann ein zweites Mal TAB gedrückt wird, werden alle erkannten Möglichkeiten angezeigt.gif ( complete)

mögliche Erweiterungen (M -?)
zeigt alle als sinnvoll erkannten Erweiterungen an. Als sinnvoll gilt hier wieder ein Kommandoname als erstes Wort eines einfachen Kommandos und ein Datei- oder Verzeichnisname für jedes weitere Wort. ( possible-completions)
nur Kommandoerweiterung (M -!)
versucht, das Wort vor dem Cursor zu einem Kommandonamen zu erweitern. ( complete-command)
mögliche Kommandoerweiterungen (C- x !)
gibt eine Liste aller als mögliche Erweiterungen für das Wort vor der Einfügemarke in Frage kommenden Kommandonamen aus. ( possible-command-completions)
nur Dateinamenerweiterung (M -/)
vergleicht das Wort bis zum Cursor nur mit Datei- und Verzeichnisnamen. Werden passende Namen gefunden, findet eine Erweiterung wie beim TAB- Editorkommando statt. ( complete-filename)
mögliche Dateinamen (C- x /)
zeigt alle als sinnvoll erkannten Datei- und Verzeichnisnamen, ohne jedoch eine Erweiterung auszuführen. ( possible-filename-completions)
Benutzernamenerweiterung (M-~)
versucht, das Wort bis zur Einfügemarke zu einem Benutzernamen zu erweitern. ( complete-username)
mögliche Benutzernamen (C- x ~)
zeigt alle möglichen Benutzernamen, auf die das Wort bis zur Einfügemarke paßt. ( possible-username-completions)
Variablenerweiterung (M -$)
versucht, das Wort bis zur Einfügemarke zu einem Variablennamen zu erweitern. ( complete-variable)
mögliche Variable (C- x $)
zeigt alle möglichen Variablennamen an, auf die das Wort bis zur Einfügemarke paßt. ( possible-variable-completion)
nur Hostnamenerweiterung (M -@)
erweitert das Wort unter der Einfügemarke zu einem Hostnamen. Dieser Name wird aus der Datei /etc/hosts genommen, wenn in der Shellvariablen hostname_completion_file keine andere Datei angegeben ist. ( complete-hostname)
mögliche Hostnamen (C- x @)
zeigt alle möglichen Hostnamenerweiterungen. ( possible-hostname-completions)
Erweiterung aus der History (M-TAB)
versucht, das Wort vor dem Cursor aus dem Historyspeicher zu ergänzen. ( dynamic-complete-history)
Erweiterung in Klammern (M- {)
schließt die Liste der möglichen Dateinamenerweiterungen in Klammern ein, so daß die Shell sie zu einer Liste dieser Namen erweitern kann. ( complete-into-braces)

Änderungen des Textes
Zeichen löschen (C- d)
löscht das Zeichen unter dem Cursor. Wenn CONTROL-d als erstes Zeichen einer leeren Kommandozeile eingegeben wird, erzeugt diese Tastenkombination ein EOF-Zeichen für das Ende der interaktiven Eingabe.gif ( delete-char)
letztes Zeichen löschen (BACKSPACE)
löscht das Zeichen vor dem Cursor. ( backward-delete-char)
wörtlich einfügen (C- q, C- v)
wird benutzt um CONTROL-Zeichen in die Kommandozeile zu schreiben, die normalerweise durch den Editor abgefangen und bearbeitet werden. ( quoted-insert)
Tabulator einfügen (M-TAB)
schreibt ein TAB in die Kommandozeile. ( tab-insert)
Text einfügen ( a, b, A, 1, ?, ... )
schreibt die Tastatursymbole (Buchstaben) in die Kommandozeile, wie sie von der Tastatur gelesen werden. Hinter dieser etwas verklausulierten Formulierung verbirgt sich die Eingabe eines normalen Buchstabens. ( self-insert)
zwei Zeichen vertauschen (C- t)
vertauscht das Zeichen vor der Einfügemarke mit dem Zeichen unter der Einfügemarke. Die Einfügemarke wandert außerdem um eine Stelle weiter. Wenn die Einfügemarke am Zeilenende angekommen ist, werden die beiden Zeichen vor der Einfügemarke vertauscht. ( transpose-chars)
zwei Wörter vertauschen (M- t)
vertauscht das Wort unter der Einfügemarke mit dem Wort vor der Einfügemarke bzw. das Wort nach der Einfügemarke mit dem Wort vor der Einfügemarke. Die Einfügemarke steht danach hinter dem letzten der vertauschten Wörter. Wenn die Einfügemarke bereits am Ende der Kommandozeile steht, werden die beiden Wörter vor der Einfügemarke vertauscht. ( transpose-words)
GROSSBUCHSTABEN (M- u)
wandelt alle Buchstaben des Wortes von der Einfügemarke an in Großbuchstaben um. ( upcase-word)
kleinbuchstaben (M- l)
wandelt alle Buchstaben des Wortes von der Einfügemarke an in Kleinbuchstaben um. ( downcase-word)
Großschreibung (M- c)
wandelt den Buchstaben unter der Einfügemarke oder den ersten Buchstaben des folgenden Wortes in Großbuchstaben um, die folgenden Buchstaben bis zum Wortende alle in Kleinbuchstaben. Anschließend steht die Einfügemarke hinter dem umgewandelten Wort. ( capitalize-word)

Ausschneiden und Einfügen
bis zum Zeilenende ausschneiden (C- k)
löscht die restliche Kommandozeile von der Einfügemarke an und speichert sie im Ausschneide-Ringspeicher. ( kill-line)
vom Zeilenanfang ausschneiden (normalerweise ohne Belegung)
schneidet den Anfang der Kommandozeile bis zur Einfügemarke aus. Dieses Kommando ist normalerweise nicht mit einer Tastenkombination verbunden. ( backward-kill-line)
Rest des Wortes ausschneiden (M- d)
schneidet von der Einfügemarke an ein Wort aus und speichert es im Ringspeicher. Als Wort werden hier alle Zeichen von der Einfügemarke an bis zum nächsten Sonderzeichen betrachtet. Eine beliebig lange Folge von Sonderzeichen unter oder unmittelbar nach der Einfügemarke wird nicht als Worttrenner behandelt. ( kill-word)
Anfang des Wortes ausschneiden (M-BACKSPACE)
schneidet alle Zeichen vor der Einfügemarke bis zum nächsten Sonderzeichen aus und speichert sie im Ringspeicher. Das Zeichen unter der Einfügemarke wird nicht ausgeschnitten. Eine beliebig lange Folge von Sonderzeichen unmittelbar vor der Einfügemarke wird nicht als Worttrenner behandelt. ( backward-kill-word)

vom Zeilenanfang bis zur Einfügemarke ausschneiden (C- u)
schneidet den Anfang der Kommandozeile bis zur Einfügemarke aus und speichert ihn im Ringspeicher. Das Zeichen unter der Einfügemarke wird nicht ausgeschnitten. ( unix-line-discard)
Anfang des Wortes ausschneiden (C- w)
schneidet alle Zeichen vor der Einfügemarke bis zum nächsten Leerzeichen aus und speichert sie im Ringspeicher. ( unix-word-rubout)
ausgeschnittenes Stück einfügen (C- y)
fügt das zuletzt in den Ausschneide-Ringspeicher geschriebene Stück vor der Einfügemarke ein. Das Stück wird dabei aus dem Ringspeicher entfernt. ( yank)
Ausschneide-Ringspeicher rotieren (M- y)
ersetzt das zuletzt eingefügte Stück durch das vor diesem Stück in den Ringspeicher eingefügte Stück der Kommandozeile. Das zuvor ersetzte Stück wird wieder in den Ringspeicher eingefügt, das aktuell ersetzte Stück daraus entfernt. ( yank-pop)

Argumente
numerisches Argument (M- 0, M- 1, ... , M-- )
wird als numerisches Argument für das folgende Editorkommando benutzt. In der Regel wird durch dieses Argument die Anzahl der Wiederholungen dieses Editorkommandos bestimmt. ( digit-argument)
universelles Argument (nicht Belegt)
entspricht dem gleichnamigen Tastaturbefehl vom emacs-Editor. Es ist allerdings keiner Tastenkombination zugeordnet. ( universal-argument)

Verschiedenes

einlesen der Initdatei (C- x C- r)
veranlaßt die Shell, die .inputrc-Datei neu einzulesen. ( re-read-init-file)
Metazeichen (ESC)
veranlaßt die Shell, das nächste Zeichen als Metazeichen zu interpretieren. Wichtig, wenn keine Metataste auf der Tastatur ausgewiesen ist: bei einer PC-Tastatur ist meist die linke ALT-Taste mit der Metafunktion belegt! ( prefix-meta)
Kommando zurück (C-_)
nimmt das zuletzt ausgeführte Editorkommando zurück. Es werden alle für eine Kommandozeile gegebenen Editorkommandos gespeichert und sind auf diese Weise nacheinander reversibel. ( undo)
alles zurück (M- r)
stellt den ursprünglichen Zustand der Kommandozeile wieder her, nimmt also alle Editorkommandos zurück. ( revert-line)
emacs Modus (C- e)
schaltet aus dem vi-Modus in den emacs-Modus. ( emacs-editing-mode)



next up previous contents index
Next: Der Kommandozeilenspeicher (history) Up: bash Previous: Interaktive Shell und



Linux Anwenderhandbuch -- Copyright 1993, 1994, 1995 S. Hetze, D. Hohndel, O. Kirch, M. Müller