Quelle sono sequenze di caratteri inviati dal tuo terminale quando premi un determinato tasto. Niente a che vedere con bash o readline di per sé, ma ti consigliamo di sapere quale sequenza di caratteri invia una determinata chiave o combinazione di tasti se vuoi configurarti readlineper fare qualcosa alla pressione di un determinato tasto.
Quando si preme il Atasto, generalmente i terminali inviano il carattere a(0x61). Se si preme <Ctrl-I>o <Tab>, generalmente si invia il ^Icarattere noto anche come TABo \t(0x9). La maggior parte dei tasti funzione e di navigazione generalmente invia una sequenza di caratteri che inizia con ^[(control- [), noto anche come ESCo \e(0x1b, 033 ottale), ma la sequenza esatta varia da terminale a terminale.
Il modo migliore per scoprire cosa invia una chiave o una combinazione di tasti per il tuo terminale, è eseguirlo sed -n le digitarlo seguito dalla Entertastiera. Quindi vedrai qualcosa di simile:
$ sed -n l
^[[1;5A
\033[1;5A$
La prima linea è causata dal terminale locale echoeseguito dal dispositivo terminale (potrebbe non essere affidabile in quanto le impostazioni del dispositivo terminale lo influenzerebbero).
La seconda riga viene emessa da sed. Il $non è da inserire, è solo per mostrare dove la fine della linea è.
Sopra Ciò significa che Ctrl-Up(che ho premuto) inviare i 6 caratteri ESC, [, 1, ;, 5e A(0x1b 0x5b 0x31 0x3b 0x35 0x41)
Il terminfodatabase registra un numero di sequenze per un numero di chiavi comuni per un numero di terminali (basato sul $TERMvalore).
Per esempio:
TERM=rxvt tput kdch1 | sed -n l
Ti direbbe quale sequenza di escape viene inviata rxvtpremendo il Deletetasto.
Puoi cercare quale chiave corrisponde a una determinata sequenza con il tuo terminale corrente con infocmp(qui assumendo ncursesinfocmp):
$ infocmp -L1 | grep -F '=\E[Z'
back_tab=\E[Z,
key_btab=\E[Z,
Le combinazioni di tasti come Ctrl-Upnon hanno voci corrispondenti nel terminfodatabase, quindi per scoprire cosa inviano, leggi l'origine o la documentazione per il terminale corrispondente o provalo con il sed -n lmetodo sopra descritto.
bind -p.