console_codes(4) управляющие и экранирующие последовательности консоли Linux

ОПИСАНИЕ

Консоль Linux имеет большой набор средств управления терминалами VT102 и ECMA-48/ISO 6429/ANSI X364, а также некоторым количеством индивидуальных последовательностей для изменения цветовой палитры, перекодировки символьного набора и т. д. В таблицах, приведенных ниже (во втором столбце), указывается мнемонический код ECMA-48 или DEC (если последнее приписано к DEC) данной функции. Последовательности без мнемонического кода не принадлежат ни к ECMA-48, ни к VT102.

Первым процессом, который выполняется после работы обычного процесса по выводу информации и отправки к драйверу потока символов консоли (для их реального вывода), является перевод кодов, используемых при обычной работе, в коды, применяемые для печати.

Если консоль работает в режиме UTF-8, то входящие байты сначала организуются в 16-битовый Юникод. В ином случае каждый байт преобразуется согласно текущей таблице перекодировки (которая переводит данные в Юникод). Смотри раздел Наборы символов ниже).

Обычно значения Юникода преобразуются в индекс шрифта, который хранится в видеопамяти таким образом, что соответствующий образ (обнаруженный в видео-ПЗУ) появляется на экране. Заметим, что работа с Юникодом (и текущими аппаратными средствами компьютеров) позволяет одновременно использовать только 512 различных образов.

Если текущим значением Юникода является управляющий символ или если в данный момент обрабатывается экранирующая последовательность, значение будет обрабатываться особым образом. Вместо того, чтобы значение было преобразовало в шрифт и отобразилось как образ, оно приведёт к выполнению определённого действия (например, перемещение курсора) или другой функции управления. Смотрите ниже раздел Управление консолью Linux.

Некорректно явно указывать в программах аппаратные последовательности управление терминалом. Linux поддерживает работу с базой возможностей терминала terminfo(5). Вместо того, чтобы вводить управляющие последовательности вручную, вы, наверняка, захотите использовать для этой работы библиотеку, использующую terminfo, или другие утилиты, такие как ncurses(3), tput(1) или reset(1).

Управление консолью Linux

Этот раздел описывает все управляющие символы и экранирущие последовательности, которые выполняют специальные команды (т.е., всё, что отличается от простого вывода символа в текущую позицию курсора) консоли Linux.

Управляющие символы

Символ считается управляющим, если (до преобразования согласно таблице перекодировки) он содержит один из 14 кодов: 00 (NUL), 07 (BEL), 08 (BS), 09 (HT), 0a (LF), 0b (VT), 0c (FF), 0d (CR), 0e (SO), 0f (SI), 18 (CAN), 1a (SUB), 1b (ESC), 7f (DEL). Можно установить режим "показывать управляющие символы" (см. ниже), при этом символы 07, 09, 0b, 18, 1a, 7f будут выводиться на экран в виде образов. С другой стороны, в режиме UTF-8 все коды с 00 по 1f воспринимаются как управляющие символы, независимо от режима "показа управляющих символов".

Если встречается управляющий символ, то он учитывается немедленно, и никак не влияет в дальнейшем (даже если он стоял в середине экранирующей последовательности), и управляющая последовательность продолжается со следующего символа. Однако, символ ESC, начинающий новую экранирующую последовательность, возможно, отменит незаконченную предыдущую последовательность, а символы CAN и SUB точно закончат любую экранирующую последовательность. Распознаваемыми управляющими символами являются: BEL, BS, HT, LF, VT, FF, CR, SO, SI, CAN, SUB, ESC, DEL, CSI. Они выполняют стандартные для них действия:

BEL (0x07, ^G) издает звуковой сигнал;
BS (0x08, ^H) удаляет предыдущий символ (смещается влево на один столбец, но не далее, чем за начало строки);
HT (0x09, ^I) перемещается на следующую позицию табуляции или в конец строки, если до этого не было установлено позиций табуляции;
LF (0x0A, ^J), VT (0x0B, ^K) и FF (0x0C, ^L) задают перевод строки, а LF/NL (в режиме новой строки) выполняет перевод каретки;
CR (0x0D, ^M) задает перевод каретки;
SO (0x0E, ^N) приводит в действие набор символов G1;
SI (0x0F, ^O) приводит в действие набор символов G0;
CAN (0x18, ^X) и SUB (0x1A, ^Z) прерывают экранирующую последовательность;
ESC (0x1B, ^[) начинают экранирующую последовательность;
DEL (0x7F) игнорируется;
CSI (0x9B) эквивалентно ESC [.

ESC- но не CSI-последовательности

ESC cRISСброс.
ESC DINDПеревод строки.
ESC ENELНовая строка.
ESC HHTSУстановить позицию табуляции в текущем столбце.
ESC MRIОбратный перевод строки.
ESC ZDECID Специфическое определение DEC. Ядро возвращает строку ESC [ ? 6 c, утверждая что это VT102.
ESC 7DECSC Сохранить текущее состояние (координаты курсора, атрибуты, наборы символов, указанные G0, G1).
ESC 8DECRCВосстановить последнее сохранённое ESC 7 состояние.
ESC [CSIНачало управляющей последовательности
ESC %Начать последовательность с выбором набора символов
ESC % @   выбор по умолчанию (ISO 646/ISO 8859-1)
ESC % G   выбор UTF-8
ESC % 8   выбор UTF-8 (устарела)
ESC # 8DECALNЭкранный тест на выравнивание DEC: заполняет экран символами E.
ESC (Начать последовательность с выбором набора символов G0
ESC ( B   выбор по умолчанию (перекодировка ISO 8859-1)
ESC ( 0   выбор графической перекодировки VT100
ESC ( U   без перекодировки --- сразу в символьную ROM
ESC ( K   перекодировка пользователя --- карта
   загружается утилитой mapscrn(8).
ESC )Начать последовательность с выбором набора символов G1
(следом идёт один из символов B, 0, U, K, как с G0).
ESC >DECPNMУстановить режим ввода цифр для дополнительной клавиатуры
ESC =DECPAMУстановить режим управления для дополнительной клавиатуры
ESC ]OSC (Должно быть: команда операционной системы, OSC) ESC ] P nrrggbb: установить палитру, в параметре задаётся 7 шестнадцатеричных символов после последнего P :-(. Здесь n задаёт цвет (0-15), а в rrggbb указываются значения красного/зелёного/синего (0-255). ESC ] R: сбросить палитру

CSI-последовательности ECMA-48

CSI (или ESC [) сопровождаются последовательностью параметров, являющихся десятичными номерами, разделёнными точкой с запятой (самый больший из них --- NPAR (16)). Пустой или отсутствующий параметр приравнивается нулю. Последовательность параметров может начинаться одним знаком вопроса.

Тем не менее, после CSI [ (или ESC [ [) считывается единственный символ и оставшаяся часть последовательности игнорируется. (Смысл этого в том, чтобы не отображать функциональную клавишу).

Результат работы CSI-последовательности определяется её конечным символом.

@ICHВставить N пустых символов.
ACUUПереместить курсор вверх на N строк.
BCUDПереместить курсор вниз на N строк.
CCUFПереместить курсор вправо на N столбцов.
DCUBПереместить курсор влево на N столбцов.
ECNLПереместить курсор вниз на N строк в столбец 1.
FCPLПереместить курсор вверх на N строк в столбец 1.
GCHAПереместить курсор в указанный столбец текущей строки.
HCUPПереместить курсор в указанную строку и столбец (начало в 1,1).
JEDОчистить экран (по умолчанию от курсора до конца экрана).
ESC [ 1 J: очистить от начала до курсора.
ESC [ 2 J: очистить весь экран.
ESC [ 3 J: очистить весь экран, включая буфер
обратной прокрутки (начиная с Linux 3.0).
KELОчистить строку (по умолчанию от курсора до конца строки).
ESC [ 1 K: очистить от начала строки до курсора.
ESC [ 2 K: очистить всю строку.
LILВставить N пустых строк.
MDLУдалить N строк.
PDCHУдалить N символов в текущей строке.
XECHОчистить N символов в текущей строке.
aHPRПереместить курсор вправо на N столбцов.
cDAОтвет по ESC [ ? 6 c: «Я терминал VT102».
dVPAПереместить курсор в указанную строку текущего столбца.
eVPRПереместить курсор вниз на N строк.
fHVPПереместить курсор в указанную строку и столбец.
gTBCБез параметра: очистить текущую позицию табуляции.
ESC [ 3 g: удалить все позиции табуляции.
hSMРежим установки (см. ниже).
lRMРежим сброса (см. ниже).
mSGRУстановка атрибутов (см. ниже).
nDSRОтчёт о состоянии (см. ниже).
qDECLLУправление индикаторами на клавиатуре.
ESC [ 0 q: выключить все индикаторы
ESC [ 1 q: включить Scroll Lock
ESC [ 2 q: включить Num Lock
ESC [ 3 q: включить Caps Lock
rDECSTBMУстановить область прокрутки; параметрами будут верхняя и нижняя строки.
s?Сохранить местоположение курсора.
u?Восстановить местоположение курсора.
`HPAПереместить курсор в указанный столбец текущей строки.

Установка параметров графики ECMA-48

Последовательность ECMA-48 SGR управляющих символов ESC [ parameters m устанавливает атрибуты экрана. В одной последовательности может быть задано несколько атрибутов. Пустой параметр (между точкой с запятой или начальной строкой или символом завершения) считается нулём.

параметррезультат
0сбросить все атрибуты в их значения по умолчанию
1установить жирный
2установить более яркий (имитируется цветом на цветном дисплее)
4 установить подчеркивание (имитируется цветом на цветном дисплее) (цвета, используемые для имитации затемнения или подчеркивания, устанавливаются при помощи ESC ] ...)
5включить мерцание
7включить инвертирование видео
10 сбросить выбранную перекодировку, флаг управления экраном и переключить метафлаг (в ECMA-48 указан как "первичный шрифт").
11 выбрать null-перекодировку, установить флаг управления экраном, сбросить переключатель метафлага (в ECMA-48 указан как "первый альтернативный шрифт").
12 выбрать null-перекодировку, установить флаг управления экраном, установить переключатель метафлага (в ECMA-48 указан как "второй альтернативный шрифт"). Переключение метафлага вызывает переключение старшего бита в байте до его перекодировки согласно таблице трансляции.
21включить нормальную интенсивность (в ECMA-48 указано как "двойное подчёркивание")
22включить нормальную интенсивность
24выключить подчеркивание
25выключить мерцание
27выключить инвертированное видео
30установить чёрный цвет символов
31установить красный цвет символов
32установить зелёный цвет символов
33установить коричневый цвет символов
34установить синий цвет символов
35установить сиреневый цвет символов
36установить голубой цвет символов
37установить белый цвет символов
38включить подчеркивание, установить цвет символов по умолчанию
39выключить подчеркивание, установить цвет символов по умолчанию
40установить чёрный цвет фона
41установить красный цвет фона
42установить зелёный цвет фона
43установить коричневый цвет фона
44установить синий цвет фона
45установить сиреневый цвет фона
46установить голубой цвет фона
47установить белый цвет фона
49установить цвет фона по умолчанию

Переключатели режимов ECMA-48

ESC [ 3 h
DECCRM (по умолчанию выключен): Показывать управляющие символы.
ESC [ 4 h
DECIM (по умолчанию выключен): Включить режим вставки.
ESC [ 20 h
LF/NL (по умолчанию выключен): Автоматически выводить код CR после LF, VT или FF.

Команды вывода состояния ECMA-48

ESC [ 5 n
Сообщение о состоянии устройства (DSR): Ответом является ESC [ 0 n (терминал в порядке).
ESC [ 6 n
Сообщение о позиции курсора (CPR): Ответом является ESC [ y ; x R, где x,y являются координатами курсора.

Последовательности спец-режима DEC (DECSET/DECRST)

Не описаны в ECMA-48. Далее будут перечислены последовательности установки режима; в последовательности для сброса режима последний знак 'h' заменяется на 'l'.

ESC [ ? 1 h
DECCKM (по умолчанию выключено): Если включено, то клавиши курсора посылают префикс ESC O, а не с ESC [.
ESC [ ? 3 h
DECCOLM (по умолчанию = 80 столбцов): режим переключения количества столбцов 80/132. В исходном коде драйвера указано, что одной этой команды недостаточно; некоторые пользовательские утилиты, использующие нестандартные режимы, такие как resizecons(8), должны менять регистры настройки видеокарты консоли.
ESC [ ? 5 h
DECSCNM (по умолчанию выключено): Включить инвертированный видеорежим.
ESC [ ? 6 h
DECOM (по умолчанию выключено): Если включено, то координаты курсора рассматриваются относительно верхнего левого угла области прокрутки.
ESC [ ? 7 h
DECAWM (по умолчанию включено): Включить режим автопереноса. В этом режиме графический символ, вводящийся после 80-го столбца (или 132-го, если DECCOLM включён), переносится в начало следующей строки.
ESC [ ? 8 h
DECARM (по умолчанию включено): Включить режим автоповтора символов при вводе с клавиатуры.
ESC [ ? 9 h
Отчёт X10 о состоянии мыши (по умолчанию выключено): Установить режим отчёта о состоянии мыши, равным 1 (или сбросить в 0), см. ниже.
ESC [ ? 25 h
DECTECM (по умолчанию включено): Сделать курсор видимым.
ESC [ ? 1000 h
Отчёт X11 о состоянии мыши (по умолчанию выключено): Установить режим отчёта о состоянии мыши, равным 2 (или сбросить в 0), см. ниже.

Специфические CSI-последовательности консоли Linux

Следующие последовательности не являются ни ECMA-48, ни VT102. Они есть только в драйвере консоли Linux. Цвета в параметрах SGR: 0 = чёрный, 1 = красный, 2 = зелёный, 3 = коричневый, 4 = синий, 5 = сиреневый, 6 = голубой, 7 = белый.

ESC [ 1 ; n ]Установить цвет n как цвет подчеркивания
ESC [ 2 ; n ]Установить цвет n как цвет затемнения
ESC [ 8 ] Установить текущую пару цветов атрибутами по умолчанию.
ESC [ 9 ; n ]Выключение экрана через n минут.
ESC [ 10 ; n ]Установить частоту звукового сигнала (в герцах).
ESC [ 11 ; n ]Установить длительность звукового сигнала (в миллисекундах).
ESC [ 12 ; n ]Переместить указанную консоль перед остальными.
ESC [ 13 ] Включить экран.
ESC [ 14 ; n ] Установить интервал отключения питания VESA (в минутах).
ESC [ 15 ] Переместить предыдущую консоль перед остальными (начиная с Linux 2.6.0).
ESC [ 16 ; n ] Задать интервал мигания курсора в миллисекундах (начиная с Linux 4.2)

Наборы символов

Ядро располагает информацией о 4-х типах трансляции байтов в символы консоли экрана. Эти четыре таблицы: a) Latin1 -> PC, b) графика VT100 -> PC, c) PC -> PC, d) определяется пользователем.

В системе существует два набора символов, называемых G0 и G1, и один из них является текущим набором символов системы (изначально это G0). Ввод ^N заставляет набор G1 стать текущим, ^O делает текущим набор G0.

Данные переменные G0 и G1 указывают на таблицу трансляции и могут меняться пользователем. Изначально они указывают на таблицы a) и b) соответственно. Последовательности ESC ( B, ESC ( 0, ESC ( U и ESC ( K заставляют G0 ссылаться на таблиц трансляции a), b), c) и d), соответственно. Последовательности ESC ) B, ESC ) 0, ESC ) U, и ESC ) K заставляют G1 ссылаться на таблицу трансляции a), b), c) и d), соответственно.

Последовательность ESC c приводит к сбросу терминала, то есть то, что вы хотели бы сделать при наличии «мусора» на экране. Рекомендация, указанная после «echo ^V^O», только сделает G0 текущим набором, но нет никакой гарантии, что G0 указывает на таблицу a). В некоторых дистрибутивах есть программа reset(1), которая всего лишь выполняет команду «echo ^[c». Если элемент terminfo является правильным для консоли (и содержит элемент rs1=\Ec), то «tput reset» также сработает.

Определенная пользователем таблица перекодировки может быть установлена с помощью mapscrn(8). Результатом перекодировки будет то, что при указании символа c в видеопамять будет отправлен символ s = перекодировка[c] . Побитовое изображение, соответствующее s, ищется в ПЗУ символов и может меняться при помощи setfont(8).

Отслеживание мыши

Для отслеживания работы мыши в системе предполагается выдача xterm(1)-совместимых сигналов о состоянии мыши. Так как драйвер консоли не распознает такого устройства, как мышь (или похожего типа), то эти сигналы отправляются во входной поток консоли, только когда драйвер виртуального терминала получает сигнал ioctl об обновлении состояния мыши. Эти сигналы ioctl должны генерироваться пользовательскими приложениями, поддерживающими работу с мышью такими, как служба gpm(8).

Параметром для всех созданных xterm(1) экранирующих последовательностей (сигналов от мыши) будет один символ, код которого равен значение+040. Например, '!' соответствует единице. Отчёт системы координат экрана начинается с 1.

В режиме совместимости с X10 при нажатии на кнопки посылаются экранирующие последовательности, в которых кодируется и расположение мыши, и информация о нажатой кнопке. Режим включается при выдаче ESC [ ? 9 h и выключается при выдаче ESC [ ? 9 l. При нажатии на кнопку xterm(1) посылает ESC [ M bxy (6 символов), где b --- это кнопка 1, а x и y равны координатам x и y при нажатии на кнопку. Это такие же коды, какие генерирует и выдаёт ядро.

В обычном режиме отслеживания мыши (который не был реализован в Linux 2.0.24) экранирующие последовательности посылаются и при нажатии и при отпускании кнопки мыши. Также посылается информация о модификаторе. Режим включается при выдаче ESC [ ? 1000 h и выключается при выдаче ESC [ 1000 l. При нажатии или отпускании кнопки xterm(1) выдает ESC [ M bxy. Два младших бита b содержат информацию о кнопках: 0=MB1 нажата, 1=MB2 нажата, 2=MB3 нажата, 3=отпущена. Старшие биты содержат информацию о том, какие модификаторы были нажаты, когда была нажата кнопка. Эта информация складывается при нажатии: 4=Shift, 8=Meta, 16=Control. Ещё раз: x и y являются координатами x и y мыши при обработке события. Координаты верхнего левого угла рассматриваются как (1,1).

Сравнение с другими терминалами

Множество других типов терминалов описаны, подобно консоли Linux, как VT100-совместимые. Далее мы обсудим различия между консолью Linux и двумя другими важнейшими типами --- DEC VT102 и xterm(1).

Обработка управляющих символов

Тип VT102 также распознает следующие управляющие символы:

NUL (0x00) игнорируется;
ENQ (0x05) запускает обратное ответное сообщение;
DC1 (0x11, ^Q, XON) возобновляет передачу;
DC3 (0x13, ^S, XOFF) заставляет VT100 игнорировать (и останавливать передачу) всех кодов за исключением XOFF и XON.

VT100-подобную обработку DC1/DC3 можно включить в драйвере терминала.

Программа xterm(1) (в режиме VT100) распознает управляющие символы BEL, BS, HT, LF, VT, FF, CR, SO, SI, ESC.

Экранирующие последовательности

Последовательности консоли VT100, не реализованные в консоли Linux:

ESC NSS2Сдвиг на 2. (Выбрать набор символов G2 только для следующего
символа.)
ESC OSS3Сдвиг на 3. (Выбрать набор символов G3 только для следующего
символа.)
ESC PDCSСтрока управления устройством (заканчивается на ESC \)
ESC XSOSНачало строки.
ESC ^PMЧастное сообщение (заканчивается на ESC \)
ESC \STСимвол завершения строки
ESC * ...Определить набор символов G2
ESC + ...Определить набор символов G3

Программа xterm(1) (в режиме VT100) распознает ESC c, ESC # 8, ESC >, ESC =, ESC D, ESC E, ESC H, ESC M, ESC N, ESC O, ESC P ... ESC \, ESC Z (отвечает ESC [ ? 1 ; 2 c, "Я VT100 с улучшенными видеопараметрами") и ESC ^ ... ESC \ с теми же значениями, какие указаны выше. Принимаются ESC (, ESC ), ESC *, ESC + за которыми 0, A, B для специального символа DEC и режима рисования линий, UK и US-ASCII, соответственно.

Пользователь может настроить xterm(1) так, чтобы он отвечал на специальные управляющие последовательности VT220, и в этом случае он будет идентифицировать себя как VT52, VT100 и далее, в зависимости от способа настройки и инициализации.

Для настройки определённых ресурсов он принимает ESC ] (OSC). Помимо символа завершения строки (ST) из ECMA-48, xterm(1) для завершения OSC-строки также принимает BEL. Есть несколько управляющих последовательностей OSC, распознаваемых xterm(1):

ESC ] 0 ; txt STУстановить имя значка и заголовок окна равным txt.
ESC ] 1 ; txt STУстановить имя значка равным txt.
ESC ] 2 ; txt STУстановить заголовок окна равным txt.
ESC ] 4 ; num; txt STУстановить цвет ANSI num равным txt.
ESC ] 10 ; txt STУстановить цвет динамического текста равным txt.
ESC ] 4 6 ; name STИзменить файл журнала на name (обычно отключено
в параметрах компиляции)
ESC ] 5 0 ; fn STУстановить шрифт fn.

Распознаются следующие параметры с несколько измененным значением (больше сохраняется состояние, поведение ближе к VT100/VT220):

ESC 7 DECSCСохранить курсор
ESC 8 DECRCВосстановить курсор

Также распознается

ESC FКурсор в нижний левый угол экрана (если разрешено
ресурсом hpLowerleftBugCompat для xterm(1))
ESC lБлокировать память (терминалы HP).
Блокировать память выше курсора.
ESC mРазблокировать память (терминалы HP).
ESC nLS2Вызов набора символов G2.
ESC oLS3Вызов набора символов G3.
ESC |LS3RВызов набора символов G3 в качестве GR.
ESC }LS2RВызов набора символов G2 в качестве GR.
ESC ~LS1RВызов набора символов G1 в качестве GR.

Также распознается ESC % и предоставляется более полная реализация UTF-8 чем в консоли Linux.

Последовательности CSI

Старые версии xterm(1), например из X11R5, воспринимают мерцание SGR как жирность SGR. В более новых версиях, в которых реализованы цвета ANSI, например в XFree86 3.1.2A 1995 года, атрибут мерцания отображается цветом. В современных версиях xterm мерцание SGR реализовано в виде мерцающего текста, который можно также сделать цветным в качестве альтернативы отображения SGR. Исходные версии X11R6 не распознают настройки цвета SGR вплоть до версии X11R6.8, в которую был включён XFree86 xterm. Все последовательности CSI ECMA-48 CSI, понимаемые Linux, также понимает xterm, однако в xterm(1) реализовано несколько управляющих последовательностей ECMA-48 и DEC, которые не понимаются Linux.

Программа xterm(1) распознаёт все последовательности спец-режимов DEC, описанных выше, но ни одной последовательности спец-режимов Linux. О собственных спец-режимах xterm(1) можно прочитать в документе Управляющие последовательности Xterm, написанном Edward Moy, Stephen Gildea и Thomas E. Dickey и доступном в дистрибутиве X. Этот документ хотя и сокращённый, но всё равно намного больше данной справочной страницы. Хронологический обзор в

описывает изменения в xterm.

Программа vttest

демонстрирует многие из этих управляющих последовательностей. В исходном дистрибутиве xterm(1) также содержатся примеры сценариев, которые учат работать с другими свойствами.

ЗАМЕЧАНИЯ

Последовательность ESC 8 (DECRC) не может восстановить набор символов, изменённый с помощью ESC %.

ДЕФЕКТЫ

В версии 2.0.23 набор CSI является неправильным и недейственным, NUL не игнорируется внутри экранирующих последовательностей.

Некоторые старые версии ядер (после 2.0) анализируют 8-битные управляющие последовательности. В них ("управляющие коды C1") используются коды от 128 до 159 для замены ESC [, ESC ] и подобных начальных двухбайтовых управляющих последовательностей. Они частично существуют в современных ядрах (или не распознаются или не работают из-за поддержки UTF-8), и реализованы не полностью, и должны расцениваться как ненадежные.

Последовательности "спец-режима" Linux не учитывают правила ECMA-48 для управляющих последовательностей спец-режима. В частности, они заканчиваются ] и не используют стандартный символ завершения. Последовательность OSC (установить палитру) --- большая проблема, так как xterm(1) рассматривает её как управляющую последовательность, которой требуется окончание строки (ST). В отличие от последовательностей setterm(1), которые будут проигнорированы (так как они не являются правильными управляющими последовательностями), последовательность палитры приведёт к подвисанию xterm(1) (хотя нажав клавишу return это исправится). Чтобы приспособить приложения, в которых жёстко заданы управляющие последовательности Linux, установите ресурс xterm(1) brokenLinuxOSC равным true.

В старой версии данного документа предполагалось, что Linux распознаёт управляющую последовательность ECMA-48 для невидимости текста. Она игнорируется.