Ketika Anda membaca seluruh baris dengan polos read
(atau read -r
opsi lain yang tidak mempengaruhi perilaku ini), editor baris yang disediakan kernel mengenali Backspacekunci untuk menghapus satu karakter, serta beberapa perintah lainnya (termasuk Returnuntuk menyelesaikan input baris dan kirim). Tombol pintas dapat dikonfigurasi dengan stty
utilitas. Terminal dikatakan dalam mode matang ketika editor lini aktif. Dalam mode mentah, setiap karakter yang diketik pada keyboard segera dikirim ke aplikasi. Dalam mode matang, karakter disimpan dalam buffer dan hanya baris lengkap yang dikirimkan ke aplikasi.
Untuk berhenti membaca setelah sejumlah karakter tetap untuk diimplementasikan read -n
, bash harus beralih ke mode mentah. Dalam mode mentah, terminal tidak melakukan pemrosesan Backspacekunci (pada saat Anda menekan Backspace, karakter sebelumnya telah dikirim ke bash), dan bash tidak melakukan pemrosesan apa pun (mungkin karena ini memberikan fleksibilitas yang lebih besar memungkinkan skrip untuk melakukan pemrosesan sendiri).
Anda dapat memberikan opsi -e
untuk mengaktifkan editor baris bash sendiri (readline, yang merupakan editor baris yang tepat, tidak seperti kernel yang sangat kasar). Karena bash melakukan edisi baris, bash dapat berhenti membaca setelah jumlah karakter yang diminta.
Gilles 'SANGAT berhenti menjadi jahat'
sumber
read
membaca 'jumlah karakter yang dimasukkan' masih belum terjawab.