Ctrl + 4 mengirim ^ \
Terminal mengirim karakter (atau lebih tepatnya byte), bukan kunci. Ketika tombol yang mewakili karakter yang dapat dicetak ditekan, terminal mengirimkan karakter itu ke aplikasi. Sebagian besar tombol fungsi dikodekan sebagai urutan melarikan diri: urutan karakter yang dimulai dengan nomor karakter 27. Beberapa gantungan kunci dari formulir Ctrl+ character, dan beberapa tombol fungsi, dikirim sebagai karakter kontrol - dalam rangkaian karakter ASCII , di mana semua komputer modern gunakan sebagai basis (Unicode, ISO Latin- n, dll. semuanya adalah superset ASCII), 33 karakter adalah karakter kontrol: karakter nomor 0 hingga 31 dan 127. Karakter kontrol tidak dapat dicetak, tetapi dimaksudkan untuk memiliki efek dalam aplikasi; misalnya karakter 10, yang merupakan Control-J (umumnya ditulis ^ J), adalah karakter baris baru, jadi ketika terminal menampilkan karakter itu, ia memindahkan kursor ke baris berikutnya, daripada menampilkan mesin terbang. Karakter melarikan diri itu sendiri adalah karakter kontrol, ^ [(nilai 27).
Tidak ada karakter kontrol yang cukup untuk mencakup semua Ctrl+ charactergantungan kunci. Hanya huruf dan karakter yang @[\]^_?
memiliki karakter kontrol yang sesuai. Ketika Anda menekan Ctrl+ 4atau Ctrl+ $(yang saya duga adalah Ctrl+ Shift+ 4), terminal harus memilih sesuatu untuk dikirim. Tergantung pada terminal dan konfigurasinya, ada beberapa kemungkinan umum:
- Terminal mengabaikan Ctrlpengubah dan mengirim karakter
4
atau $
.
- Terminal mengirimkan urutan pelarian yang menyandikan kunci dan pengubah yang tepat yang ditekan.
- Terminal mengirimkan beberapa karakter kontrol lainnya.
Banyak terminal mengirim karakter kontrol untuk beberapa kunci di baris digit:
- Ctrl+ 2→ ^ @
- Ctrl+ 3→ ^ [
- Ctrl+ 4→ ^ \
- Ctrl+ 5→ ^]
- Ctrl+ 6→ ^^
- Ctrl+ 7→ ^ _
- Ctrl+ 8→ ^?
Saya tidak tahu di mana kebaktian khusus ini muncul.
Ctrl+ |mengirimkan karakter yang sama karena itu Ctrl+ Shift+ \dan terminal mengirimkan ^ \ apakah tombol shift ditekan atau tidak.
^ \ berhenti
Terminal itu sendiri (lebih tepatnya, dukungan terminal generik di kernel) menafsirkan beberapa karakter kontrol khusus. Interpretasi ini dapat dikonfigurasi untuk memetakan karakter yang berbeda atau dimatikan oleh aplikasi yang ingin memproses karakter sendiri. Salah satu interpretasi yang terkenal adalah bahwa ^ M, karakter yang dikirim oleh Returnkunci, mengirimkan baris saat ini ke aplikasi, jika terminal dalam mode matang , di mana aplikasi menerima input baris demi baris.
Beberapa karakter mengirim sinyal ke aplikasi di latar depan. ^ C mengirimkan sinyal interupsi (SIGINT), yang secara konvensional memberi tahu aplikasi untuk menghentikan apa yang dilakukannya dan membaca perintah pengguna selanjutnya. Aplikasi non-interaktif biasanya keluar. ^ \ mengirimkan sinyal keluar (SIGQUIT), yang secara konvensional memberi tahu aplikasi untuk keluar sesegera mungkin tanpa menyimpan apa pun; banyak aplikasi tidak mengesampingkan perilaku default, yaitu mematikan aplikasi dengan segera¹. Jadi, ketika Anda menekan Ctrl+ 4(atau apa pun yang mengirim karakter ^ \) di cat
atau bc
, tidak ada yang menimpa perilaku default, aplikasi terbunuh.
Terminal itu sendiri mencetak ^\
bagian dari pesan: itu adalah penggambaran visual dari karakter yang Anda ketikkan, dan terminal dalam mode matang dan dengan gema dihidupkan (karakter ditampilkan oleh terminal segera setelah Anda mengetiknya, sebagai lawan dari mode non-gema di mana karakter hanya dikirim ke aplikasi, yang mungkin atau mungkin tidak memilih untuk menampilkannya). Bagian ini Quit
berasal dari bash: ia memperhatikan bahwa proses anaknya mati karena sinyal berhenti, dan itulah cara untuk memberi tahu Anda.
Kerang menangani semua sinyal umum, sehingga jika Anda mengetikkan ^ \ dalam sebuah shell, Anda tidak membunuh sesi Anda, Anda hanya mendapatkan prompt baru, sama seperti ^ C.
Anda dapat bermain dengan pengaturan terminal dengan stty
perintah.
¹ Dan secara tradisional menghasilkan dump inti , tetapi banyak sistem menonaktifkannya secara default saat ini.
less
atauvim
. Perhatikan bahwa dalamcmd | less
,CTRL-C
biasanya membunuhcmd
(sedangkan untukless
itu ditangani untuk membatalkan tindakan saat ini (seperti pencarian)) (lanjutan)Selain jawaban Gilles izinkan saya menambahkan, bahwa Anda selalu dapat memasukkan karakter yang tidak dapat dicetak di bash dengan Ctrl-v+ key( Ctrl-v+ Ctrl+4dalam kasus ini) dan memeriksa kode karakter dengan
Anda mendapatkan kode desimal karakter, yang seperti Anda periksa
man ascii
sesuai dengan pemisah file (FS) .sumber
printf '%d\n' '"^\'
?