Кілька приміток до історичного 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.