GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguire uno script nella shell quando viene premuto un tasto di scelta rapida?

Come posso eseguire uno script in Shell quando viene premuto un tasto di scelta rapida.

In sostanza, ciò di cui ho bisogno è che quando viene premuto un tasto di scelta rapida, lo script dovrebbe leggere da un file e visualizzare quel contenuto nel terminale.

Risposta accettata:

Puoi usare il comando integrato, bind per mappare una scorciatoia da tastiera in modo che esegua uno script di comando/shell.

Esempio

Supponiamo di voler eseguire il comando pwd , quando premiamo F12 chiave.

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

Ora quando premo F12 alla mia richiesta, $ :

$ pwd
/home/saml

Determinazione delle scorciatoie da tastiera

È possibile utilizzare la tecnica seguente per determinare il codice di escape per una determinata scorciatoia da tastiera. Sulla maggior parte dei sistemi premi Ctrl + V , rilasciare e quindi premere il tasto per il quale si desidera inserire il codice. Ci sono altri sistemi con cui funzionerà M invece di V

Esempio

Premendo Ctrl + V quindi rilascia entrambi Ctrl e V e infine premi F12 in una finestra di terminale restituisce questo:

$ ^[[24~

Questo output può essere interpretato come segue, ^[ è Esc chiave. Quindi, quando vogliamo specificare questa particolare chiave usando il bind comando dobbiamo usare un \e per indicare Esc chiave seguita da tutto il resto dall'alto. Quindi il bind il comando ha questo aspetto:

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

Eseguire un comando nel mezzo

Puoi anche utilizzare bind -x per impostare le scorciatoie da tastiera che eseguiranno i comandi mentre stai digitando qualcosa al prompt e verrà visualizzato l'output di questi comandi, ma tutto ciò che stavi digitando al prompt rimarrà intatto.

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

NOTA: Questo metodo funziona solo con le scorciatoie da tastiera che generano 1 carattere, quindi F12 non funzionerà qui.

Esempio

Definiamo la scorciatoia da tastiera Alt + Maiusc + C .

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

Supponiamo che sto digitando il comando finger :

$ finger

Ora premo la scorciatoia da tastiera Alt + Maiusc + C :

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

Quello che sta succedendo è bind sta eseguendo il comando definito, who , prendendo il suo output e inserendolo davanti al prompt. Se lo ripeti vedrai cosa sta succedendo, ecco l'output di me che lo colpisco 2 volte:

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

Il tuo problema

Quindi un'idea sarebbe quella di usare bind -x metodo sopra e cat per visualizzare questo file di testo quando richiesto:

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

Ora quando eseguo i comandi posso vedere questo file in questo modo:

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

L'output del file someinfo.txt viene visualizzato sopra il mio finger comando sopra.

Correlati:convalida di un SelectList HTLM utilizzando Java Script?

Riferimenti

  • In bash, come posso associare un tasto funzione a un comando?

Linux
  1. Come gestire gli interruttori in uno script di shell?

  2. Come eseguire Sh Script da un collegamento sul desktop?

  3. Come eseguire uno script di shell quando un file o una directory cambia?

  4. Come eseguire uno script al termine della sessione xfce

  5. Come eseguire uno script di shell all'avvio

Come eseguire il comando / script della shell di Linux in background

Come utilizzare le variabili negli script della shell

Come eseguire un comando Shell con Python

Come creare script di shell

Come eseguire i comandi in Gnuplot usando lo script della shell?

Come eseguire un comando in uno script della shell?