Esas son secuencias de caracteres enviados por su terminal cuando presiona una tecla determinada. No tiene nada que ver con bash o readline per se, pero querrá saber qué secuencia de caracteres envía una tecla determinada o una combinación de teclas si desea configurar readline
para hacer algo al presionar una tecla determinada.
Cuando presiona la Atecla, generalmente los terminales envían el carácter a
(0x61). Si presiona <Ctrl-I>
o <Tab>
, generalmente envía el ^I
carácter también conocido como TAB
o \t
(0x9). La mayoría de las teclas de función y navegación generalmente envían una secuencia de caracteres que comienza con ^[
(control- [), también conocido como ESC
o \e
(0x1b, 033 octal), pero la secuencia exacta varía de terminal a terminal.
La mejor manera de averiguar qué envía una tecla o combinación de teclas para su terminal, es ejecutarla sed -n l
y escribirla seguido por Enterel teclado. Entonces verás algo como:
$ sed -n l
^[[1;5A
\033[1;5A$
La primera línea es causada por el terminal local echo
realizado por el dispositivo terminal (puede que no sea confiable ya que la configuración del dispositivo terminal lo afectaría).
La segunda línea sale por sed
. El $
no se debe incluir, es solo para mostrarle dónde está el final de la línea.
Por encima de eso significa que Ctrl-Up(que he pulsado) enviar a los 6 caracteres ESC
, [
, 1
, ;
, 5
y A
(0x1b 0x5b 0x31 0x35 0x41 0x3B)
La terminfo
base de datos registra una serie de secuencias para varias claves comunes para una serie de terminales (en función del $TERM
valor).
Por ejemplo:
TERM=rxvt tput kdch1 | sed -n l
Te diría qué secuencia de escape se envía rxvt
al presionar la Deletetecla.
Puede buscar qué tecla corresponde a una secuencia dada con su terminal actual con infocmp
(aquí suponiendo ncurses
infocmp):
$ infocmp -L1 | grep -F '=\E[Z'
back_tab=\E[Z,
key_btab=\E[Z,
Las combinaciones de teclas como Ctrl-Upno tienen entradas correspondientes en la terminfo
base de datos, por lo que para saber qué envían, lea la fuente o la documentación del terminal correspondiente o pruébelo con el sed -n l
método descrito anteriormente.
bind -p
.