Baru-baru ini saya telah meninjau tombol pintasan bash, dan mencoba menemukan yang sesuai untuk kunci aktivasi tmux saya.
Saya merasa menarik bahwa ctrl + m
dan ctrl + q
tidak digunakan dalam pintasan bash, menurut https://en.wikipedia.org/wiki/Bash_(Unix_shell).
Mengapa mereka tidak digunakan? Saya merasa ctrl + m
cukup berguna.
Apakah dua kombinasi ini dimaksudkan oleh desain untuk DIY (define it yourself)
penggunaan? Atau ada cerita lain?
Jawaban yang Diterima:
Ctrl+M mengirimkan karakter yang sama (RET) sebagai tombol Enter di terminal. Program tidak memiliki cara untuk membedakannya, sehingga kunci ini tidak dapat dikonfigurasi secara terpisah.
Ctrl+Q sudah digunakan untuk XON secara default, sehingga tidak dapat digunakan oleh Bash, tetapi Anda tetap dapat menggunakannya di tmux, karena tmux menggunakan mode input mentah.
Program GUI dapat membaca dari keyboard, bahwa Tombol m telah ditekan dengan pengubah Ctrl dan menggunakan Ctrl+m sebagai jalan pintas, tetapi shell atau program terminal apa pun menerima kombinasi Ctrl+Tombol seperti karakter ascii dari 0 hingga 26
[email protected] = 0
Ctrl+A = 1
Ctrl+B = 2
dan seterusnya. Anda dapat mencoba ini untuk melihat nilainya
cat ctrlkeys <<EOF
^A^B^C^D^E^F
EOF
od -c ctrlkeys
0000000 001 002 003 004 005 006 n
Untuk memasukkan nilai, tekan Ctrl+v sebelum Ctrl+[a-f] agar tidak ditafsirkan sebagai nilai mentah.
Saat Anda melihat tabel ascii(7) Anda dapat melihat kode kontrol dalam tabel dengan karakter yang sesuai @..Z di sebelah kiri. Misalnya
015 13 0D CR 'r' (carriage ret) 115 77 4D M
atau
011 9 09 HT 't' (horizontal tab) 111 73 49 I
Lapisan berikutnya yang menginterpretasikan kode kontrol sebelum bash adalah stty (ubah dan cetak pengaturan terminal)
stty -a
intr = ^C; quit = ^; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O;
lihat stty(1) untuk mengetahui arti dari lnext
atau start
dan stop
.
Lihat juga readline(3) karena bash dan program cli GNU lainnya menggunakan perpustakaan itu untuk mengontrol jalur input dan tentu saja bash(1) /READLINE, bagian readline dari halaman manual bash.
Terkait:Melampirkan vs. tidak melampirkan nilai variabel dalam tanda kutip di bash?
Catatan:XYZ(NUM) berarti halaman manual XYZ dari bagian NUM, jadi hasil dari man NUM XYZ
.