Readline-Funktion ohne Tastenkombination ausführen?


26

Ich habe gerade die Readline-Manpage gelesen und eine Reihe großartiger Befehle entdeckt, von denen ich nichts wusste. Einige haben jedoch keine Standardschlüsselbindungen. Gibt es eine Möglichkeit, die ungebundenen Befehle von der Shell auszuführen?

Ich frage nicht, wie man den Befehl in ~ / .inputrc bindet, sondern wie man ihn als "one off" aus der Shell oder in einem Bash-Skript ausführt.

Zum Beispiel der Befehl "dump-variables". Gibt es einen Befehl, an den ich "dump-variables" als Argument übergeben kann, damit er ausgeführt wird?


2
Ich glaube nicht, dass es einen kurzen Blick auf das Readline-Handbuch und die Quelle gibt.
Jim Paris

Antworten:


10

Ich glaube, was Sie suchen, ist der bindBefehl selbst. Laut man builtinInformationen bind <readline-command>können Sie mit running einmalige Aktionen ausführen. Ich konnte es jedoch nicht so zum Laufen bringen, wie es das Handbuch vorschreibt. Es hat immer wieder dazu geführt, dass die Schlüssel für mich nicht funktionierten. Ihr Kilometerstand kann variieren. Ich habe die folgenden Befehle gefunden, die für Sie von Nutzen sein können.

bind -p # Equivalent to dump-functions [machine readable]
bind -P # Equivalent to dump-functions [human readable]

bind -s # Equivalent to dump-macros    [machine readable]
bind -S # Equivalent to dump-macros    [human readable]

bind -v # Equivalent to dump-variables [machine readable]
bind -V # Equivalent to dump-variables [human readable]

Anmerkung bearbeiten Ich möchte darauf hinweisen, wie ärgerlich es ist, dass es nicht so funktioniert, wie es das Handbuch vorschreibt, denn wenn Sie eintippen bindund dann die Tabulatortaste für die automatische Vervollständigung drücken, werden alle Befehle angezeigt.


3
Wenn Sie readline-Funktionen direkt aufrufen: Ich glaube nicht, dass das Handbuch behauptet, dass Sie das können; für den Fall, dass Sie sich auf die Syntaxform beziehen bind readline-command: Ich vermute, dass commandes sich um eine Definitions- (Zuordnungs-) Zeile handelt, nicht um eine direkt aufrufbare readline- Funktion . Die automatische Vervollständigung ist auf einigen Plattformen (z. B. Fedora 20) ausdrücklich vorkonfiguriert , auf vielen anderen jedoch nicht . Das Vorhandensein bedeutet NICHT, dass Sie readline-Funktionen direkt aufrufen können - es ist eine ziemlich "dumme" Befehlsabschlussspezifikation: Der Abschluss funktioniert mit jedem Argument, das an übergeben wird bind.
mklement0

1
+1 für die Befehle zum Auflisten von Funktionen / Makros / Variablen; Es lohnt sich die Zugabe -Xfür Shell - Befehle (definiert über -x).
mklement0
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.