Puoi determinare la sequenza di caratteri emessa da un tasto premendo Ctrl- vsulla riga di comando, quindi premendo il tasto che ti interessa. Sul mio sistema per F12, ottengo ^[[24~
. Il ^[
rappresenta Esc. Diversi tipi di terminali o emulatori di terminale possono emettere codici diversi per la stessa chiave.
Al prompt di Bash puoi inserire un comando come questo per abilitare la macro chiave in modo da poterla provare.
bind '"\e[24~":"foobar"'
Ora, quando premi F12, otterrai "foobar" sulla riga di comando pronto per ulteriori modifiche. Se desideri che una sequenza di tasti immetta immediatamente un comando, puoi aggiungere una nuova riga:
bind '"\e[24~":"pwd\n"'
Ora quando si preme F12, verrà visualizzata la directory corrente senza dover premere Enter. E se hai già digitato qualcosa sulla riga e lo usi che viene eseguito automaticamente? Potrebbe diventare disordinato. Tuttavia, potresti cancellare la riga come parte della tua macro:
bind '"\e[24~":"\C-k \C-upwd\n"'
Lo spazio fa in modo che Ctrl- uabbia qualcosa da eliminare per evitare che il campanello suoni.
Una volta che la macro funziona nel modo desiderato, puoi renderla persistente aggiungendola al tuo ~/.inputrc
file. Non è necessario il bind
comando o il set esterno di virgolette singole:
"\e[24~":"\C-k \C-upwd\n"
Modificare:
Puoi anche creare un'associazione di tasti che eseguirà qualcosa senza disturbare la riga di comando corrente.
bind -x '"\eW":"who"'
Quindi mentre stai digitando un comando che richiede un nome utente, ad esempio, e devi conoscere i nomi degli utenti che hanno effettuato l'accesso, puoi premere Alt- Shift- We who
verrà visualizzato l'output di e il prompt verrà emesso nuovamente con il tuo comando parziale intatto e il cursore nella stessa posizione nella riga.
Sfortunatamente, questo non funziona correttamente per chiavi come quelle F12che producono più di due caratteri. In alcuni casi questo può essere aggirato.
Il comando ( who
in questo caso) potrebbe essere qualsiasi eseguibile: un programma, uno script o una funzione.