Beberapa catatan tentang STTY
perintah historis untuk mengklarifikasi beberapa ketidakakuratan dalam jawaban lain dan komentar terkait :
Terminal sebelumnya seperti DEC VT05 atau VT50 dan teleprinters sebelumnya hanya mendukung karakter huruf besar. Yang dimaksud adalah bahwa tidak ada karakter huruf kecil yang dapat menjadi input dari mereka atau bahwa mereka tidak akan dapat menampilkan huruf selain huruf besar.
Unix peka huruf besar kecil dan sebagian besar perintah menjadi huruf kecil, Anda dapat melihat ada masalah di sana. Itu sebabnya ada mode termio / termios khusus (dan yang masih ada di Unites modern meskipun terminal tersebut sudah lama hilang) untuk menangani hal itu.
termio / termios masing-masing adalah antarmuka yang lebih lama dan lebih baru untuk mengontrol driver tty di Unix. Dalam termio (s) ioctl
, Anda menentukan input, output, bendera kontrol ... yang menentukan bagaimana sinyal listrik pada garis serial harus ditangani menjadi karakter input dan output dan perilaku internal driver wrt hal-hal seperti gema, editor baris ... Sebagian besar berlaku untuk terminal virtual seperti konsol Unix VGA modern atau terminal semu.
Antarmuka baris perintah termio(s)
adalah stty
perintah.
Untuk menangani terminal huruf besar, ada tiga termio(s)
flag yang terlibat:
IUCLC
(Input Huruf Besar ke Huruf Kecil): karakter yang masuk dikonversi ke huruf kecil saat diinput. Itu berarti A
pengiriman oleh terminal dianggap sebagai a a
. Itu berarti bahwa dengan ini aktif, sekarang saya bisa mengetikkan LS
VT50 saya, dan shell akan membaca ls
dari /dev/ttyX
. Saya juga sekarang dapat menjalankan stty
perintah.
- Sekarang, dengan
IUCLC
sendirian dan terminal echo
, saat saya mengetik LS
, pengemudi akan mengirim ls
kembali ke terminal (sehingga saya dapat melihat apa yang saya ketik) yang tidak dapat ditampilkan, jadi kami juga perlu OLCUC
(Output Huruf Kecil ke Huruf Besar), yaitu kita perlu mengubah huruf kecil menjadi huruf besar sebelum mengirim ke terminal.
- Sekarang, kita dapat mengoperasikan Unix dari VT50, tetapi bagaimana jika kita ingin memasukkan karakter huruf besar sekarang? Di situlah flag
xcase
lokal masuk. Ini memungkinkan (hanya dalam mode input kanonik) mengirim huruf besar A
dengan mengetik \A
, dan pada output, huruf besar A
diterjemahkan sebagai \A
. (yang tidak diimplementasikan di Linux)
The stty
perintah memiliki yang sesuai iuclc
, olcuc
dan xcase
pengaturan dan alias untuk ketiga: lcase
. Pengaturan default dan apa yang Anda dapatkan stty sane
tidak lcase
aktif.
Jadi, ketika Anda menggunakan VT50, yang perlu Anda lakukan adalah menjalankan:
stty lcase
untuk dapat melakukan apa saja. Tetapi tunggu dulu, bagaimana Anda melakukannya ketika Anda hanya bisa mengirim huruf besar? Di situlah Anda memerlukan STTY
perintah sebagai alias untuk stty
, dan itulah sebabnya stty
mendukung LCASE
sebagai alias untuk lcase
.
Tidak ada SANE
alias seperti itu karena Anda tidak ingin melakukan stty sane
ketika terminal Anda adalah huruf kapital semua.
Jika Anda menjalankan stty lcase
atau stty olcuc
secara tidak sengaja pada terminal normal (coba di xterm
atau terminal modern), di situlah Anda harus masuk stty sane
untuk kembali ke normal. Tetapi Anda tidak perlu STTY
perintah untuk itu. Jika Anda mengetik stty sane
, Anda akan melihat STTY SANE
kembali bergema, tapi itu hanya teks yang ditampilkan (bukan perintah yang dimasukkan) yang akan diterjemahkan, itu masih stty sane
perintah yang akan dijalankan.
Mereka iuclc
, olcuc
, xcase
bendera yang digunakan akan ditentukan oleh POSIX (dan itulah mungkin mengapa ini diterapkan di Linux meskipun saya benar-benar ragu ada yang pernah terhubung salah satu dari mereka terminal lama ke sistem Linux (selain untuk bersenang-senang)), tetapi telah dihapus di POSIX: 2001.