Jika kamu melakukan:
stty eol =
Dan kemudian jalankan demo yang disarankan di EDIT Anda, Anda akan melihat bilah foo di cetakan test.out . Baris disiplin terminal akan flush output nya ke pembacanya seperti membaca setiap khusus eol char dalam masukan Anda.
Terminal mode kanonik Linux - seperti yang dapat dikonfigurasi dengan stty icanon
atau mungkin hanya stty sane
- menangani karakter input khusus berikut ...
- eof
- default:
^D
- Menghentikan jalur input dan menyiram output ke pembaca. Karena dihapus dari input, jika input sebagai satu-satunya karakter pada sebuah baris, ia dilewatkan sebagai pembacaan nol - atau akhir file - ke pembaca.
- eol
- default: tidak ditugaskan
- Juga mengakhiri jalur input, tetapi tidak dihapus dari input.
- membunuh
- default:
^U
- Hapus semua input yang disangga.
- menghapus
- default:
^H
(atau mungkin @
atau ^?
pada beberapa sistem)
- Menghapus karakter input buffered terakhir.
Ketika iexten juga diatur - seperti stty icanon iexten
atau, sekali lagi, mungkin hanya stty sane
, terminal Linux kanonik juga akan menangani ...
- eol2
- default: belum ditetapkan
- Juga juga mengakhiri jalur input, dan juga tidak dihapus dari input.
- werase
- default:
^W
- Menghapus kata input buffered terakhir .
- rprnt
- default:
^R
- Mencetak ulang semua input yang disangga.
- Selanjutnya
- default:
^V
- Menghapus signifikansi khusus sejauh menyangkut disiplin garis untuk segera karakter input berikut.
Karakter-karakter ini ditangani dengan menghapusnya dari aliran input - kecuali eol dan eol2 , yaitu - dan melakukan fungsi khusus yang terkait sebelum meneruskan aliran yang diproses ke pembaca - yang biasanya merupakan shell Anda, tetapi dapat berupa apa pun yang dilakukan oleh grup proses latar depan .
Karakter input khusus lainnya yang ditangani serupa tetapi dapat dikonfigurasikan secara independen dari pengaturan icanon apa pun termasuk set isig seperti stty isig
dan mungkin juga termasuk dalam konfigurasi waras :
- berhenti
- default:
^\
- Siram semua input yang disangga (jika noflsh tidak diatur) dan mengirimkan SIGQUIT ke grup proses latar depan - kemungkinan menghasilkan dump inti.
- susp
- default:
^Z
- Flush semua input buffered (jika noflsh tidak diatur) dan mengirimkan SIGTSTP ke grup proses foreground. Kelompok proses yang ditangguhkan kemungkinan dapat dilanjutkan dengan salah satu
kill -CONT "$!"
atau hanya fg
dalam ( set -m
) shell yang dikendalikan pekerjaan.
- intr
- default:
^C
- Siram semua input yang disangga (jika noflsh tidak diatur) dan mengirimkan SIGINT ke grup proses latar depan.
Dan set ixon - dikonfigurasi seperti stty ixon
dan juga biasanya termasuk dalam konfigurasi waras :
- berhenti
- default:
^S
- Hentikan semua output ke pembaca hingga mulai dibaca dalam input atau - ketika ixany juga diatur - setidaknya satu karakter lagi dibaca.
- mulai
- default:
^Q
- Restart output jika sebelumnya telah dihentikan dengan berhenti .
- Baik berhenti dan mulai dihapus dari input saat diproses, tetapi jika output dimulai kembali karena setiap karakter dalam input ketika ixany diatur maka karakter itu tidak dihapus.
Karakter khusus yang ditangani pada sistem non-Linux lainnya mungkin termasuk ...
- menyiram
- default:
^O
- Mengalihkan pembuangan dan pembilasan input yang disangga dan dihapus dari input.
- dsusp
- default: belum ditetapkan
- Siram semua input yang disangga hanya ketika pembaca membaca karakter input khusus yang ditugaskan kemudian mengirimkan SIGTSTP.
Dan mungkin...
- swtch
- default
^@
(artinya \0
atau NUL
)
- Mengalihkan foreground shell-layers. Untuk digunakan dengan aplikasi
shl
shell-layer pada beberapa sistem.
- Implementasi
shl
yang multipleks ptys dan karenanya kompatibel dengan kontrol pekerjaan daripada perilaku swtch yang bergantung pada implementasi asli dapat secara bebas dimiliki dalam heirloom-toolchest
tool suite.
Untuk gambaran yang lebih jelas tentang bagaimana dan mengapa (dan mungkin mengapa tidak) fungsi input ini ditangani berkonsultasi man 3 termios
.
Semua fungsi di atas dapat ditugaskan (atau dipindahkan) - jika ada - seperti stty
function assigned-key
. Untuk menonaktifkan fungsi tunggal lakukan . Sebagai alternatif, karena berbagai upaya dengan penugasan untuk fungsi pengeditan baris yang disebutkan di atas dengan semua implementasi GNU, AST, atau heirloom tampaknya menunjukkan, Anda juga dapat sebagai penugasan NUL untuk fungsi apa pun tampaknya sama dengan mengaturnya agar tidak ditugaskan di linux saya. sistem.stty
function
^-
stty
stty
function
^@
Mungkin Anda memang melihat gema dari karakter-karakter ini ketika Anda mengetikkannya (karena kemungkinan dapat dikonfigurasi dengan [-] ctlecho ) , tetapi ini hanya penanda untuk menunjukkan di mana Anda melakukannya - program yang menerima input Anda tidak memiliki gagasan bahwa Anda ketik mereka (kecuali eol [2] , yaitu) dan hanya menerima salinan input Anda yang telah diterapkan disiplin disiplin efeknya.
Konsekuensi dari penanganan terminal terhadap berbagai fungsi pengeditan garis adalah bahwa ia harus memerlukan buffer input sampai batas tertentu agar dapat bertindak berdasarkan fungsi yang Anda tunjukkan kepadanya bahwa ia seharusnya - dan dengan demikian tidak mungkin ada pasokan input tanpa batas yang Anda bisa membunuh kapan saja . The garis buffer lebih tepatnya membunuh penyangga.
Jika Anda menetapkan karakter eol atau eol2 ke beberapa pembatas yang terjadi pada input - bahkan jika tidak ada baris baru atau karakter kembali, misalnya - maka Anda hanya akan dapat membunuh hingga titik yang terakhir terjadi dan buffer kill Anda akan meluas sejauh mungkin sampai selanjutnya - atau baris baru (atau kembali jika icrnl diatur dan igncr tidak) - terjadi pada input.