Taste nach Belieben definieren

  • Viele Programme, insbesondere Bash, verwenden die GNU Readline-Bibliothek zur Eingabe von Kommandozeilen. Readline gestattet es, jede Taste nach Belieben zu definieren. Diese Definitionen werden, zusammen mit anderen Konfigurationsdaten, in der Datei .inputrc im Home-Directory abgelegt. Wollen Sie zum Beispiel ein häufig benutztes Kommando, nämlich "less /var/log/messages" auf die Taste F1 legen, dann müssen Sie folgende Zeile in .inputrc einfügen: "e[11~" "less /var/log/messages^M" Hierbei ist zu beachten, dass das letzte Zeichen in e[11~ eine Tilde ist. Alle Zeichen sind exakt so einzugeben wie hier zu sehen, mit Ausnahme des ^M am Ende. Das ^M steht für Enter und bewirkt, dass das Kommando direkt ausgeführt wird. Ohne das ^M würde nur der Kommandostring in die Kommandozeile kopiert und auf Eingabe von Enter oder weiteren Zeichen gewartet. Wie man das ^M eingibt, hängt vom verwendeten Editor ab. Bei vi ist es ctrl-V, gefolgt von Enter. Es muss auf jeden Fall ein einzelnes Zeichen eingegeben werden, ASCII-Code 13. Die Zeichenfolge e in der Datei wird von Readline als das Escape-Zeichen interpretiert. Die oben angegebene Sequenz gilt unter X11. An der Konsole ist sie unterschiedlich, aber man kann durchaus beide in der selben .inputrc definieren. Normalerweise wird die Änderung in .inputrc erst in einer neu gestarteten Shell wirksam. Drücken wir jedoch die Tastenfolge ctrl-X ctrl-R, wird die Änderung sofort wirksam, wie das Drücken von F1 zeigt. Wie kann man den Trick auf weitere Tasten ausweiten? Dazu muss man den Code kennen, den die Tasten erzeugen. Diesen kann man herausfinden, indem man in der Kommandozeile ctrl-V gefolgt von der gewünschten Taste eingibt. Das ergibt eine Escape-Sequenz (die ersten beiden Zeichen sind ^[, was für ctrl-[, gleichbedeutend mit Escape steht). Ersetzt man das ^[ durch e, hat man die benötigte Sequenz für .inputrc gefunden. Die Details zur Verwendung von Readline sind in der Bash-Manpage enthalten.