Exécuter une fonction readline sans raccourci clavier?

26

Je lisais juste la page de manuel readline et j'ai découvert un tas de commandes géniales que je ne connaissais pas. Cependant, plusieurs n'ont pas de raccourcis clavier par défaut. Existe-t-il un moyen d'exécuter les commandes indépendantes à partir du shell?

Je ne demande pas comment lier la commande dans ~ / .inputrc, mais plutôt comment l'exécuter en tant que "one off" à partir du shell ou dans un script bash.

Par exemple, la commande "dump-variables". Existe-t-il une commande à laquelle je peux fournir des "dump-variables" comme argument pour l'exécuter?

erikcw
la source
2
Je ne pense pas qu'il y en ait, d'un rapide coup d'œil au manuel de lecture et à la source.
Jim Paris

Réponses:

10

Je crois que ce que vous recherchez est la bindcommande elle-même. Selon les man builtininformations, la course bind <readline-command>à pied vous permet d'exécuter des opérations ponctuelles, cependant, je ne pouvais pas le faire fonctionner comme le manuel le dit ... il a continué à faire en sorte que les clés ne fonctionnent pas pour moi; Votre kilométrage peut varier. J'ai trouvé les commandes suivantes qui peuvent vous être utiles.

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]

Modifier la note Je voudrais souligner à quel point il est ennuyeux qu'il ne fonctionne pas comme le manuel le dit, car si vous tapez bindet appuyez sur tab pour la saisie semi-automatique, il affiche toutes les commandes.

sparticvs
la source
3
En appelant directement les fonctions readline: je ne pense pas que le manuel prétend réellement que vous pouvez le faire; au cas où vous vous référez à la forme de la syntaxe bind readline-command: je soupçonne commandqu'il y a une ligne de définition (mappage), pas une fonction de ligne de lecture directement appelable . L'auto-complétion est une fonctionnalité explicitement préconfigurée sur certaines plates-formes (par exemple, Fedora 20), mais pas sur beaucoup d'autres ; sa présence n'implique PAS que vous pouvez appeler directement les fonctions readline - c'est une spécification de commande assez "stupide": la complétion fonctionne sur n'importe quel argument fourni à bind.
mklement0
1
+1 pour les commandes pour lister les fonctions / macros / variables en vigueur; Il est intéressant de l' ajout -Xde commandes shell (définies via -x).
mklement0