Die Zuordnung von Tastenkombinationen zu
bestimmten Editorfunktionen kann aber noch weiter Ihren speziellen
Bedürfnissen angepaßt werden. Sie können jede Editorfunktion mit einer
frei wählbaren Tastenkombination verknüpfen.
Diese Um- bzw. Neubelegung der
Tasten kann zur Laufzeit mit dem bind-Shellkommando (-> Seite
) durchgeführt werden.
Das Format einer Tastaturbelegung sieht folgendermaßen aus:
Taste : Kommandobezeichnung
Die Kommandobezeichnungen sind in Klammern hinter den Beschreibungen der Editorfunktionen auf den vorhergehenden Seiten angegeben.
Für die Tastenkombinationen können die Konstruktionen
`\
C-' für die Kombination mit CONTROL und
`\
e-' oder `\
M-' für die Metakombinationen mit ESC oder ALT verwendet werden. Außerdem können die folgenden Tasten benannt
werden:
RUBOUT für Backspace
DEL für Delete
ESC für Escape
SPACE oder SPC für Leerzeichen
RETURN, RET, NEWLINE oder LFD für Zeilenende
TAB für Tabulator
Wenn Sie z. B. anstelle des aufwendigen set-Kommandos die Tastenkombination CONTROL -x v zum Umschalten in den vi-Modus und die Kombination CONTROL -x e zum Zurückschalten in den EMACS-Modus verwenden wollen, erreichen Sie das mit den folgenden Kommandos:
$ bind -m emacs '"\C-xv":vi-editing-mode' $ bind -m vi '"\C-xe":emacs-editing-mode' $ bind -m vi-insert '"\C-xe":emacs-editing-mode' $ _
Neben den Editorkommandos können auch Zeichenketten und Kommandokombinationen (Makros) auf bestimmte Tasten gelegt werden.
Beispielsweise können Sie mit dem folgenden Kommando ein Makro zum Editieren der PATH-Variablen im emacs-Modus installieren:
$ bind -m emacs '"\C-xp":"PATH=${PATH}\e\C-e\C-a\ef\C-f'' $ _
Es ist auch möglich, eine neue Tastaturbelegung dauerhaft
einzurichten, indem die Zuordnung von Kommandos und
Tastenkombinationen in einer Datei
abgespeichert wird.
Den Namen dieser Datei können Sie in der Shellvariablen INPUTRC
festlegen. Wenn diese Variable nicht existiert, wird die Belegung im
Heimatverzeichnis aus
der Datei ~
/.inputrc gelesen.
Für jede Umbelegung muß eine Zeile in der Datei eingetragen werden. Format und Inhalt der Zeilen stimmen mit dem oben für bind beschriebenen überein.
Zusätzlich können zur Anpassung von readline einige Schalter gesetzt und Variable belegt werden. Sie werden in der Form
set Schalter Wert
in der .inputrc-Datei eingetragen. Die Schalter können auch mit dem bind-Kommando benutzt werden. Die Werte in Klammern stellen die Voreinstellung dar.
Ähnlich wie beim C-Präprozessor können Teile der .inputrc-Datei durch die Direktiven $if, $else und $endif eingeschlossen werden, um diese Einstellungen nur unter bestimmten Bedingungen auszuführen. Folgende Tests sind vorgesehen:
$if Bash # Umlaute in der Kommandozeile erlauben: set convert-meta Off set meta-flag On set output-meta On $if term=xterm # Spezielle Einstellungen fuer xterm $else # Einstellungen fuer alle anderen Terminals $endif $if mode=vi # Tastaturbelegung im vi-Modus $endif $if mode=emacs # Tastaturbelegung im emacs-Modus $endif $endif
Eine ausführliche TeX info-Beschreibung aller readline-Funktionen kann mit dem info-Kommando nachgelesen werden.
Die aktuelle Tastaturbelegung wird mit dem Kommando ` bind -v'
ausgegeben (-> bind auf Seite ).
Viele Operationen der Shell werden mit bestimmten Symbolen eingeleitet und müssen mit weiteren Symbolen abgeschlossen werden. Beispielsweise muß eine for-Schleife durch ein done abgeschlossen werden, eine (-Klammer durch eine ), eine mit Anführungszeichen begonnene Zeichenkette muß mit Anführungszeichen abgeschlossen werden und so weiter ...
Die Shell unterstützt die Eingabe solcher Kommandos, indem sie nach
einem Zeilenende in einer unvollständigen Kommandozeile eine neue
Eingabeaufforderung -- in der Regel ein >
-- ausgibt, bis
der erwartete Abschluß des begonnenen Kommandos eingegeben ist. Die so
eingegebenen Teile werden zusammen als eine Kommandozeile
interpretiert.
Wenn die Shellvariable command_oriented_history gesetzt ist, wird ein aus mehreren Zeilen bestehendes Kommando als ein einziger Eintrag im History-Speicher behandelt.