Saya tahu ini sudah dijawab, tetapi jawabannya tidak menjelaskan apa yang terjadi.
Karakter seperti Ctrl+ Lditangani oleh aplikasi . Dalam hal memasukkan input ke dalam shell, seperti bash
, itu membersihkan layar. Beberapa aplikasi, seperti emacs
, menggunakannya untuk menggambar ulang layar dan / atau memasukkan kembali kursor.
Karakter seperti Ctrl+ Upada prompt kata sandi ditangani oleh disiplin garis TTY . Mereka akan bekerja kapan saja terminal input berada dalam mode pengeditan baris "kanonik", yang merupakan mode apa program Anda saat Anda memasukkan kata sandi. Dalam mode ini, itu adalah kernel Linux sendiri yang menafsirkan karakter ini. Anda dapat melihat fungsi apa yang ditugaskan pada kunci mana dalam output dari stty -a
:
speed 38400 baud; rows 45; columns 128; line = 0;
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; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
Di sini, Anda dapat melihat bahwa Ctrl+ Uterkait dengan kill
, yang (menurut halaman manual stty ) akan "menghapus baris saat ini". Anda juga dapat menggunakan stty
untuk mengubah pemetaan ini:
stty kill ^E # make ctrl-e erase the line
Halaman ini memiliki banyak informasi hebat tentang lapisan TTY jika Anda tertarik.
Jika hal-hal yang tidak cukup membingungkan: ketika pada prompt interaktif bash
, Anda sebenarnya tidak dalam mode pengeditan baris "kanonik". Sebaliknya, bash
menerima setiap karakter secara langsung saat Anda mengetiknya, dan menafsirkan urutan kontrol itu sendiri, melalui pustaka readline . Pustaka ini akan menghormati pemetaan yang Anda setel pada perangkat terminal Anda, jadi Anda masih bisa menggunakannya stty
untuk mengubahnya. Atau, Anda dapat menyesuaikannya secara mandiri di dalam bash
dan program berbasis readline lainnya dengan mengatur unix-line-discard
properti di dalam ~/.inputrc
file Anda . Lihat halaman bash man untuk info lebih lanjut.
Ketika Anda menjalankan suatu program, aktifkan bash
kembali mode pengeditan garis kanonik ( stty icanon
) jika diaktifkan sebelumnya, dan kemudian nonaktifkan lagi ketika program selesai ( stty -icanon
).