Кілька приміток до історичного STTY команди, щоб з’ясувати деякі неточності в іншій відповіді та пов'язані з цим коментарі :
Більш ранні термінали, як DEC VT05 або VT50, і телепринтери до цього підтримували лише великі символи. Це означало, що жоден нижній регістр ніколи не може бути введений від них або що вони не зможуть відобразити жодну іншу літеру, ніж великі регістри.
У Unix, що відрізняється регістром, і більшість команд є нижньою літерою, ви можете бачити там проблему. Ось чому існують спеціальні режими terio / terios (і вони все ще існують в сучасних Unice, хоча цих терміналів вже давно немає) для їх обробки.
Терміни / терміни - це відповідно старші та новіші інтерфейси для управління драйвером tty в Unix. У термініioctl ви вказуєте вхідні, вихідні, прапори управління ..., які визначають, як електричні сигнали в послідовної лінії обробляються вхідними та вихідними символами, а також внутрішня поведінка драйвера, наприклад, ехо, редактор рядків ... Більшість із них стосується віртуальних терміналів, таких як сучасні консолі VGA Unix або псевдотермінали.
Інтерфейсом командного рядка до termio(s)єstty команда.
Для обробки великих регістрів termio(s)задіяні три прапори:
IUCLC(Верхній регістр введення в нижній регістр): вхідні символи перетворюються на малі регістри при введенні. Це означає, що Aвідправлений терміналом розглядається як a a. Це означає, що ввімкнувши це, я тепер можу набрати LSсвій VT50, і оболонка буде читати lsз /dev/ttyX. Тепер я також можу запустити sttyкоманду.
- Тепер, будучи
IUCLCсамотнім і термінальним echo, поки я набираю LS, драйвер буде надсилати lsназад до терміналу (щоб я міг бачити, що я набираю), який він не може відображати, тому нам також потрібноOLCUC (Output нижній регістр у верхній регістр), тобто нам потрібно перетворити будь-які маленькі літери в великі регістри, перш ніж надсилати в термінал.
- Тепер ми можемо управляти Unix від VT50, але що робити, якщо ми хочемо зараз ввести великі символи? Ось де вводиться
xcase локальний прапор. Це дозволяє (лише в канонічному режимі введення) надсилати верхній регістр Aшляхом введення \A, а на виході верхній регістр Aвідображається як \A. (що не реалізовано в Linux)
sttyКоманда має відповідну iuclc, olcucі xcaseнастройку і псевдонім для всіх трьох: lcase. Налаштування за замовчуванням і те, що ви отримуєте після stty sane, lcaseвимкнено.
Отже, коли ви перебуваєте на VT50, все, що вам потрібно зробити, це запустити:
stty lcase
вміти щось робити. Але тримайте, як це зробити, коли ви можете надсилати лише великі літери? Ось де вам потрібна STTYкоманда як псевдонім для stty, і саме тому sttyпідтримується LCASEяк псевдонім для lcase.
Такого SANEпсевдоніма немає, тому що ви не хочете робити це, stty saneколи ваш термінал є великим.
Якщо ви запустите stty lcaseабо stty olcucпомилково на звичайному терміналі (спробуйте його xtermабо будь-який сучасний термінал), саме там вам потрібно ввести, stty saneщоб повернутися до нормального. Але вам для цього не потрібна STTYкоманда. Якщо ви набираєте stty sane, ви будете дивитися STTY SANEвідлуння, але це тільки відображається текст (не ввійшли команди) , які будуть переведені, це по - , як і ранішеstty sane команда , яка буде працювати.
Ті iuclc, olcuc, xcaseвикористовувані прапори, які вказуються POSIX (і це, ймовірно , чому він реалізований на Linux , хоча я серйозно сумніваюся , що хто - небудь коли - або підключений будь-який з цих старих терміналів в системі Linux (крім для задоволення)), але були вилучені POSIX: 2001.