Itu adalah urutan karakter yang dikirim oleh terminal Anda ketika Anda menekan tombol yang diberikan. Tidak ada hubungannya dengan bash atau readline per se, tetapi Anda akan ingin tahu urutan karakter apa yang diberikan kunci atau kombinasi tombol jika Anda ingin mengonfigurasi readline
untuk melakukan sesuatu dengan menekan tombol yang diberikan.
Saat Anda menekan Atombol, umumnya terminal mengirim karakter a
(0x61). Jika Anda menekan <Ctrl-I>
atau <Tab>
, maka umumnya mengirim ^I
karakter yang juga dikenal sebagai TAB
atau \t
(0x9). Sebagian besar tombol fungsi dan navigasi umumnya mengirim urutan karakter yang dimulai dengan ^[
(control- [), juga dikenal sebagai ESC
atau \e
(0x1b, 033 oktal), tetapi urutan yang tepat bervariasi dari terminal ke terminal.
Cara terbaik untuk mengetahui apa yang dikirim kunci atau kombinasi tombol untuk terminal Anda, dijalankan sed -n l
dan untuk mengetiknya diikuti dengan Enterdi keyboard. Maka Anda akan melihat sesuatu seperti:
$ sed -n l
^[[1;5A
\033[1;5A$
Baris pertama disebabkan oleh terminal lokal yang echo
dilakukan oleh perangkat terminal (itu mungkin tidak dapat diandalkan karena pengaturan perangkat terminal akan mempengaruhinya).
Baris kedua adalah keluaran oleh sed
. Ini $
tidak untuk dimasukkan, itu hanya untuk menunjukkan di mana akhir baris.
Di atas berarti bahwa Ctrl-Up(yang saya sudah ditekan) mengirim 6 karakter ESC
, [
, 1
, ;
, 5
dan A
(0x1b 0x5b 0x31 0x3b 0x35 0x41)
Basis terminfo
data mencatat sejumlah urutan untuk sejumlah kunci umum untuk sejumlah terminal (berdasarkan $TERM
nilai).
Contohnya:
TERM=rxvt tput kdch1 | sed -n l
Akan memberi tahu Anda apa urutan pengiriman yang dikirim dengan rxvt
menekan Deletetombol.
Anda dapat mencari kunci yang sesuai dengan urutan yang diberikan dengan terminal Anda saat ini dengan infocmp
(di sini dengan asumsi ncurses
infocmp):
$ infocmp -L1 | grep -F '=\E[Z'
back_tab=\E[Z,
key_btab=\E[Z,
Kombinasi kunci seperti Ctrl-Uptidak memiliki entri yang sesuai dalam terminfo
database, jadi untuk mengetahui apa yang mereka kirim, baca sumber atau dokumentasi untuk terminal yang sesuai atau coba dengan sed -n l
metode yang dijelaskan di atas.
bind -p
.