Ce sont des séquences de caractères envoyées par votre terminal lorsque vous appuyez sur une touche donnée. Rien à voir avec bash ou readline en tant que tel, mais vous voudrez savoir quelle séquence de caractères envoie une touche ou une combinaison de touches donnée si vous souhaitez configurer readline
une action sur une touche donnée.
Lorsque vous appuyez sur la Atouche, les terminaux envoient généralement le caractère a
(0x61). Si vous appuyez sur <Ctrl-I>
ou <Tab>
, envoyez généralement le ^I
caractère également appelé TAB
ou \t
(0x9). La plupart des touches de fonction et de navigation envoient généralement une séquence de caractères commençant par ^[
(control- [), également appelé ESC
ou \e
(0x1b, 033 octal), mais la séquence exacte varie d'un terminal à l'autre.
La meilleure façon de savoir ce qu'une touche ou une combinaison de touches envoie pour votre terminal est de l'exécuter sed -n l
et de la saisir Entersur le clavier. Ensuite, vous verrez quelque chose comme:
$ sed -n l
^[[1;5A
\033[1;5A$
La première ligne est provoquée par le terminal local echo
créé par le terminal (elle peut ne pas être fiable car les paramètres du terminal pourraient l’affecter).
La deuxième ligne est sortie par sed
. Le $
ne doit pas être inclus, c'est seulement pour vous montrer où se trouve la fin de la ligne.
Au- dessus de cela signifie que Ctrl-Up(que j'ai pressé) envoyer les 6 caractères ESC
, [
, 1
, ;
, 5
et A
(0x1b 0x5b 0x31 0x3B 0x35 0x41)
La terminfo
base de données enregistre un certain nombre de séquences pour un certain nombre de clés communes pour un certain nombre de terminaux (en fonction de la $TERM
valeur).
Par exemple:
TERM=rxvt tput kdch1 | sed -n l
Vous dirait quelle séquence d'échappement est envoyée en rxvt
appuyant sur la Deletetouche.
Vous pouvez rechercher quelle touche correspond à une séquence donnée avec votre terminal actuel avec infocmp
(en supposant ici ncurses
infocmp):
$ infocmp -L1 | grep -F '=\E[Z'
back_tab=\E[Z,
key_btab=\E[Z,
Les combinaisons de touches, par exemple, Ctrl-Upn'ont pas d'entrées correspondantes dans la terminfo
base de données. Pour savoir ce qu'elles envoient, lisez le code source ou la documentation du terminal correspondant ou essayez-le avec la sed -n l
méthode décrite ci-dessus.
bind -p
.