¿Ejecutar una función readline sin la combinación de teclas?


26

Estaba leyendo la página de manual de readline y descubrí un montón de excelentes comandos que no conocía. Sin embargo, varios no tienen enlaces de teclas predeterminados. ¿Hay alguna manera de ejecutar los comandos no vinculados desde el shell?

No estoy preguntando cómo vincular el comando en ~ / .inputrc, sino cómo ejecutarlo como "único" desde el shell o en un script bash.

Por ejemplo, el comando "dump-variables". ¿Hay algún comando al que pueda alimentar "variables de volcado" como argumento para que se ejecute?


2
No creo que exista, de un vistazo rápido al manual y la fuente de readline.
Jim Paris

Respuestas:


10

Creo que lo que estás buscando es el bindcomando en sí. Según la man builtininformación que se ejecuta, le bind <readline-command>permite ejecutar una sola vez, sin embargo, no pude hacerlo funcionar como el manual dice que debería ... seguía haciendo que las teclas no funcionaran para mí; Su experiencia puede ser diferente. Encontré los siguientes comandos que pueden serle útiles.

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]

Editar nota Me gustaría señalar lo molesto que es que no funcione como dice el manual porque si escribe bindy luego presiona la tecla para completar automáticamente, muestra todos los comandos.


3
Volver a llamar directamente a las funciones de readline: no creo que el manual realmente afirme que puede hacer eso; en caso de que se refiera a la forma de sintaxis bind readline-command: sospecho commandque significa una línea de definición (mapeo), no una función readline directamente invocable . La finalización automática es un detalle preconfigurado explícitamente en algunas plataformas (por ejemplo, Fedora 20), pero no en muchas otras ; su presencia NO implica que pueda llamar directamente a las funciones de readline; es una especificación de finalización de comando bastante "tonta": la finalización funciona en cualquier argumento suministrado a bind.
mklement0

1
+1 para los comandos para enumerar funciones / macros / variables en efecto; Vale la pena agregarlo -Xpara los comandos de shell (definidos mediante -x).
mklement0
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.