Satu hal yang mengganggu saya menggunakan terminal Linux adalah ketika saya harus mengetikkan kata sandi yang tidak terlihat, seperti ketika Anda menjalankan ssh . Kadang-kadang saya salah ketik satu atau lebih huruf dan kemudian saya harus menekan tombol backspace beberapa kali untuk memastikan bahwa saya menghapus semuanya untuk memulai lagi.
Saya tahu ini bukan masalah besar tetapi karena di hari lain saya menemukan bahwa menekan CTRL + L "membersihkan" terminal saya bertanya-tanya apakah ada cara untuk menghapus / menghapus kata sandi yang tidak terlihat tanpa mengandalkan backspace atau menekan tombol enter untuk coba lagi.
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, sepertiemacs
, 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
:Di sini, Anda dapat melihat bahwa Ctrl+ Uterkait dengan
kill
, yang (menurut halaman manual stty ) akan "menghapus baris saat ini". Anda juga dapat menggunakanstty
untuk mengubah pemetaan ini: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 menggunakannyastty
untuk mengubahnya. Atau, Anda dapat menyesuaikannya secara mandiri di dalambash
dan program berbasis readline lainnya dengan mengaturunix-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
).sumber