Risposte:
È possibile utilizzare il comando incorporato bindper mappare una scorciatoia da tastiera in modo che esegua uno script di comando / shell.
Supponiamo di voler eseguire il comando pwdquando premiamo il F12tasto.
$ bind '"\e[24~":"pwd\n"'
Ora, quando premo F12il mio prompt $:
$ pwd
/home/saml
È possibile utilizzare la seguente tecnica per determinare il codice di escape per una determinata scorciatoia da tastiera. Sulla maggior parte dei sistemi premere Ctrl+ V, rilasciare e quindi premere il tasto per il quale si desidera il codice. Ci sono altri sistemi con cui funzionerà Minvece diV
Premere Ctrl+ Vquindi rilasciare entrambi Ctrle Vinfine premere F12in una finestra del terminale per restituire questo:
$ ^[[24~
Questo output può essere interpretato come segue, ^[è la Escchiave. Quindi, quando vogliamo specificare questa chiave particolare usando il bindcomando, dobbiamo usare a \eper indicare la Escchiave seguita da tutto il resto dall'alto. Quindi il bindcomando è simile al seguente:
$ bind '"\e[24~":"....."'
È inoltre possibile utilizzare bind -xper impostare le scorciatoie da tastiera che eseguiranno i comandi mentre si sta digitando qualcosa al prompt e l'output di questi comandi verrà visualizzato, ma tutto ciò che si stava digitando al prompt rimarrà intatto.
$ bind -x '"\eW":"..."'
NOTA: questo metodo funziona solo con le scorciatoie da tastiera che generano 1 carattere, quindi F12non funzionerà qui.
Alias la scorciatoia da tastiera Alt+ Shift+ W.
$ bind -x '"\eW":"who"'
Di 'che sto digitando il comando finger:
$ finger
Ora premo la scorciatoia da tastiera Alt+ Shift+ 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
Quello che sta succedendo è che bindsta eseguendo il comando definito who, prendendo il suo output e inserendolo di fronte al prompt. Se lo ripeti vedrai cosa sta succedendo, ecco l'output da me colpendolo 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
Quindi un'idea sarebbe quella di utilizzare il bind -xmetodo sopra e catdi visualizzare questo file di testo al tuo prompt:
$ 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.txtviene visualizzato sopra il mio fingercomando sopra.
echo ' (spazio dopo la virgoletta singola), quindi premere Ctrl + v, quindi il tasto desiderato, quindi spazio, virgoletta singola ... come descritto qui . Esempio:echo ' ^[OD '
bind '"\e[24~":"airmon-ng start wlan0\n"'ma dopo aver chiuso il terminale, la cosa sembra essere ripristinata e tutti i tasti di scelta rapida sono andati