Są to sekwencje znaków wysyłane przez twój terminal po naciśnięciu danego klawisza. Nie ma nic wspólnego z bashem lub readline per se, ale będziesz chciał wiedzieć, jaką sekwencję znaków wysyła dany klawisz lub kombinacja klawiszy, jeśli chcesz skonfigurować readlinedziałanie po naciśnięciu danego klawisza.
Po naciśnięciu Aklawisza generalnie terminale wysyłają aznak (0x61). Jeśli naciśniesz <Ctrl-I>lub <Tab>, wtedy ogólnie wyślij ^Iznak znany również jako TABlub \t(0x9). Większość klawiszy funkcyjnych i nawigacyjnych generalnie wysyła ciąg znaków rozpoczynający się od ^[(control- [), znany również jako ESClub \e(0x1b, ósemkowy 033), ale dokładna sekwencja różni się w zależności od terminalu.
Najlepszym sposobem, aby dowiedzieć się, co klawisz lub kombinacja klawiszy wysyła do terminala, jest uruchomiona sed -n li wpisz ją, a następnie wpisz Enterna klawiaturze. Wtedy zobaczysz coś takiego:
$ sed -n l
^[[1;5A
\033[1;5A$
Pierwsza linia jest spowodowana przez lokalny terminal echowykonany przez urządzenie końcowe (może nie być wiarygodny, ponieważ wpłyną na to ustawienia urządzenia końcowego).
Drugi wiersz jest wyprowadzany przez sed. $Nie ma być włączone, to tylko, aby pokazać, gdzie koniec linii jest.
Powyżej Oznacza to, że Ctrl-Up(co mam wciśnięty) wysłać 6 znaków ESC, [, 1, ;, 5i A(0x1b 0x5b 0x31 0x35 0x41 0x3b)
Baza terminfodanych rejestruje szereg sekwencji dla wielu wspólnych kluczy dla pewnej liczby terminali (na podstawie $TERMwartości).
Na przykład:
TERM=rxvt tput kdch1 | sed -n l
Powie Ci, jaką sekwencję ucieczki wysyła się rxvtpo naciśnięciu Deleteklawisza.
Możesz sprawdzić, który klucz odpowiada danej sekwencji z bieżącym terminalem za pomocą infocmp(tutaj przy założeniu ncursesinfocmp):
$ infocmp -L1 | grep -F '=\E[Z'
back_tab=\E[Z,
key_btab=\E[Z,
Kombinacje klawiszy, takie jak Ctrl-Up, nie mają odpowiednich wpisów w terminfobazie danych, więc aby dowiedzieć się, co wysyłają, przeczytaj źródło lub dokumentację odpowiedniego terminala lub wypróbuj je za pomocą sed -n lmetody opisanej powyżej.
bind -p.