Не выводит символ новой строки после операции KILL
Да
ECHONL
Вывод NL (в каноническом режиме), даже если выключить эхо-контроль
Нет
*
ECHOPRT
Вывод удаляемых символов в обратном порядке (между \ и /)
Нет
FLUSHO
Сброс вывода (не используется)
—
ICANON
Ввод в каноническом режиме (построчно)
Да
*
IEXTEN
Включение расширенной обработки вводимых символов
Да
*
ISIG
Возможность вводить символы, генерирующие сигналы (INTR, QUIT, SUSP)
Да
*
NOFLSH
Отключение сброса при вводе INTR, QUIT и SUSP
Нет
*
PENDIN
Новый вывод отложенного ввода при следующем чтении (не реализовано)
(Нет)
TOSTOP
Генерация SIGTTOU для фонового вывода (см. раздел 34.7.1)
Нет
*
XCASE
Каноническое представление верхнего/нижнего регистра
(Нет)
Отдельные флаги, перечисленные в табл. 58.2, были доступны в традиционных терминалах с ограниченными возможностями; они редко используются в современных системах. Например, флаги IUCLC, OLCUC и XCASE применялись в терминалах, которые были способны отображать только прописные буквы. Когда пользователь при входе вводил свое имя в верхнем регистре, во многих старых UNIX-системах программа login исходила из того, что работа выполняется именно на таком терминале. В результате устанавливались вышеперечисленные флаги, а строка приглашения для ввода пароля имела следующий вид:
\PASSWORD:
С этого момента все строчные буквы будут выводиться в верхнем регистре, а перед настоящими прописными буквами будет вставляться символ обратного слэша (\). Аналогично ввод настоящих прописных букв необходимо начинать с данного символа. Флаг ECHOPRT тоже был разработан для терминалов с ограниченными возможностями.
Различные маски задержки тоже являются наследием былых времен; они позволяют выводить символы разрыва строки и разрыва страницы таким устройствам, как медленные терминалы и принтеры. Флаги OFILL и OFDEL давали возможность определить способ выполнения задержки. Большинство из таких флагов не используется в Linux. Исключение составляет параметр TAB3 для маски TABDLY, позволяющий выводить символ табуляции в виде совокупности пробелов (не больше восьми).
В следующих подразделах приводятся подробности о некоторых флагах структуры termios.
Если установить этот флаг (и выключить при этом флаг IGNBRK), то при выполнении условия BREAK активной группе процессов будет передаваться сигнал SIGINT.
Установка данного флага включает эхо-контроль вводимых символов. При вводе паролей его лучше сбрасывать. Эхо-контроль также отключается в командном режиме редактора vi, когда вводимые символы интерпретируются как команды редактирования, а не как текст. Флаг ECHO работает как в каноническом, так и в неканоническом режиме.
В сочетании с ECHO флаг ECHOCTL приводит к эхо-контролю управляющих символов (например, ^A для Ctrl+A); исключение составляют табуляция, символ новой строки, START и STOP. Если флаг ECHOCTL не установлен, то управляющие символы не экранируются.
Управляющими считаются символы, у которых коды ASCII меньше 32 (плюс символ DEL, чей код равен 127). Управляющий символ (назовем его x) выводится в виде знака ^, за которым идет результат выражения x^64. Для всех символов, кроме DEL, оператор XOR (^) в этом выражении добавляет к их кодам значение 64. Таким образом, Ctrl+A (код ASCII 1) выводится на экран как ^A (A имеет код 65). В случае с DEL происходит вычитание 64 из 127, в результате чего получается 63 — код ASCII символа? поэтому DEL выводится как ^?.
В каноническом режиме установка данного флага приводит к визуальному представлению операции ERASE; это выглядит как вывод последовательности из трех символов: возврат-пробел-возврат. Если флаг ECHOE выключить, то операция ERASE все так же будет удалять символы, но ее выполнение будет экранироваться (например, как ^?).
Эти флаги управляют визуальным представлением операции KILL (например, удаление строки) в каноническом режиме. По умолчанию (когда оба флага включены) строка удаляется визуально (см. ECHOE). Если сбросить хотя бы один из этих флагов, то визуальное удаление перестанет выполняться (однако входящая строка по-прежнему будет отклоняться), а операция KILL будет экранироваться (например, как ^U). Если флаг ECHOK установлен, а ECHOKE сброшен, то дополнительно выводится символ новой строки.