GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo ejecutar un script en Shell cuando se presiona una tecla de acceso directo?

¿Cómo podría ejecutar un script en Shell cuando se presiona una tecla de método abreviado?

Esencialmente, lo que necesito es que cuando se presiona una tecla de método abreviado, la secuencia de comandos debe leerse de un archivo y mostrar ese contenido en la terminal.

Respuesta aceptada:

Puede usar el comando incorporado, bind para asignar un atajo de teclado para que ejecute un comando/script de shell.

Ejemplo

Digamos que queremos ejecutar el comando, pwd , cuando presionamos F12 clave.

$ bind '"\e[24~":"pwd\n"'

Ahora cuando presiono F12 a mi indicación, $ :

$ pwd
/home/saml

Determinación de atajos de teclado

Puede utilizar la siguiente técnica para determinar el código de escape para un método abreviado de teclado determinado. En la mayoría de los sistemas presione Ctrl + V , suelte y luego presione la tecla para la que desea el código. Hay algunos otros sistemas con los que funcionará M en lugar de V

Ejemplo

Presionando Ctrl + V luego suelte ambos Ctrl y V y finalmente presione F12 en una ventana de terminal devuelve esto:

$ ^[[24~

Esta salida se puede interpretar de la siguiente manera, ^[ es Esc llave. Entonces, cuando queremos especificar esta clave en particular usando el bind comando necesitamos usar un \e para denotar el Esc tecla seguida de todo lo demás desde arriba. Entonces el bind el comando se ve así:

$ bind '"\e[24~":"....."'

Ejecutar un comando en el medio

También puede hacer uso de bind -x para configurar atajos de teclado que ejecutarán comandos mientras está escribiendo algo en el indicador, y se mostrará la salida de estos comandos, pero lo que estaba escribiendo en el indicador permanecerá intacto.

$ bind -x '"\eW":"..."'

NOTA: Este método solo funciona con métodos abreviados de teclado que generan 1 carácter, por lo que F12 no funcionará aquí.

Ejemplo

Pongamos un alias al método abreviado de teclado Alt + Mayús + W .

$ bind -x '"\eW":"who"'

Digamos que estoy escribiendo el comando finger :

$ finger

Ahora presiono el atajo de teclado Alt + Mayús + W :

saml     tty1         2013-09-01 11:01 (:0)
saml     pts/0        2013-09-01 11:03 (:0.0)
saml     pts/1        2013-09-01 11:05 (:0.0)
saml     pts/2        2013-09-01 11:05 (:0.0)
saml     pts/5        2013-09-03 22:45 (:0.0)
$ finger

Lo que está pasando es bind está ejecutando el comando definido, who , tomando su salida e insertándola delante del aviso. Si lo repites verás lo que está pasando, aquí hay un resultado de mí golpeándolo 2 veces:

saml     tty1         2013-09-01 11:01 (:0)
saml     pts/0        2013-09-01 11:03 (:0.0)
saml     pts/1        2013-09-01 11:05 (:0.0)
saml     pts/2        2013-09-01 11:05 (:0.0)
saml     pts/5        2013-09-03 22:45 (:0.0)
saml     tty1         2013-09-01 11:01 (:0)
saml     pts/0        2013-09-01 11:03 (:0.0)
saml     pts/1        2013-09-01 11:05 (:0.0)
saml     pts/2        2013-09-01 11:05 (:0.0)
saml     pts/5        2013-09-03 22:45 (:0.0)
$ finger

Tu problema

Así que una idea sería usar bind -x método anterior y cat para mostrar este archivo de texto en su solicitud:

$ bind -x '"\eW":"cat someinfo.txt"'

Ahora, cuando ejecuto comandos, puedo ver este archivo así:

This is text from some 
multi-line file reminding
me how to do some 
stuff
$ finger 

La salida del archivo someinfo.txt se muestra encima de mi finger comando anterior.

Relacionado:¿Validar una lista de selección HTLM usando Java Script?

Referencias

  • En bash, ¿cómo vinculo una tecla de función a un comando?

Linux
  1. ¿Cómo manejar los interruptores en un script de Shell?

  2. ¿Cómo crear un archivo temporal en Shell Script?

  3. ¿Detectar si la tecla se presiona desde el script?

  4. ¿Cómo activar un evento en el script de Shell cuando se quita un dispositivo USB?

  5. ¿Cómo ejecutar Sh Script desde un acceso directo de escritorio?

Cómo ejecutar el comando / secuencia de comandos de Linux Shell en segundo plano

Cómo usar variables en secuencias de comandos de Shell

Cómo ejecutar un comando de Shell con Python

Cómo crear scripts de shell

¿Cómo ejecutar un comando en un script de Shell?

¿Cómo ejecutar un script bash?