Открыть сервис

Escape-последовательность ANSI

Escape-последовательность ANSI (ANSI escape code) — это стандартизированный набор управляющих последовательностей символов, используемый для форматирования текстового вывода в терминалах и эмуляторах терминалов. Эти последовательности позволяют изменять цвет текста и фона, стиль шрифта (жирный, курсив, подчёркнутый), перемещать курсор, очищать экран и выполнять другие действия, не зависящие от конкретного аппаратного обеспечения. Название происходит от стандарта ANSI X3.64 (1979), хотя фактически последовательности были разработаны ранее и получили широкое распространение благодаря системам на базе Unix и MS-DOS.

История

Происхождение escape-последовательностей связано с развитием телетайпов и видеодисплеев. В 1960-х годах компания Digital Equipment Corporation (DEC) выпустила серию терминалов VT, которые использовали управляющие коды для позиционирования курсора и форматирования текста. В 1979 году Американский национальный институт стандартов (ANSI) опубликовал стандарт X3.64, который унифицировал эти коды. Однако реальная популярность пришла с появлением ANSI.SYS — драйвера для MS-DOS, который интерпретировал эти последовательности в текстовом режиме. В 1990-х годах escape-последовательности стали основой для BBS (электронных досок объявлений) и ANSI-арта. В современных операционных системах (Linux, macOS, Windows 10+) они поддерживаются на уровне эмуляторов терминалов (xterm, GNOME Terminal, Windows Terminal).

Структура

Escape-последовательность всегда начинается с символа ESC (ASCII 27, в шестнадцатеричной системе — 0x1B, в управляющей записи — \e или \033). После ESC следует открывающая квадратная скобка [ (CSI — Control Sequence Introducer). Далее идут параметры, разделённые точкой с запятой (;), и завершающая буква, определяющая команду. Например, последовательность \e[31m (где \e — ESC) устанавливает красный цвет текста.

Формальная запись

Общий вид: ESC [ <параметры> <команда>

Классификация команд

Команды делятся на несколько функциональных групп:

Управление курсором

Очистка экрана и строк

Управление цветом и стилем (SGR — Select Graphic Rendition)

Команда ESC [ <параметры> m — наиболее часто используемая группа. Параметры могут быть комбинированы через точку с запятой. Основные коды:

ПараметрЭффект
0Сброс всех атрибутов (обычный текст, цвета по умолчанию)
1Жирный/яркий текст
2Тусклый (dim)
3Курсив (не везде поддерживается)
4Подчёркнутый
5Медленное мигание
6Быстрое мигание (редко поддерживается)
7Инверсные цвета (текст и фон меняются местами)
8Невидимый (скрытый) текст
9Перечёркнутый
30–37Цвет текста (стандартная палитра)
38Расширенный цвет текста (256 или TrueColor)
39Цвет текста по умолчанию
40–47Цвет фона (стандартная палитра)
48Расширенный цвет фона (256 или TrueColor)
49Цвет фона по умолчанию
90–97Яркий цвет текста (светлые тона)
100–107Яркий цвет фона

Стандартная 8-цветная палитра (коды 30–37 и 40–47):

КодЦветКод (яркий)Цвет
30Чёрный90Тёмно-серый
31Красный91Светло-красный
32Зелёный92Светло-зелёный
33Жёлтый93Светло-жёлтый
34Синий94Светло-синий
35Пурпурный95Светло-пурпурный
36Голубой96Светло-голубой
37Белый97Ярко-белый

Расширенный цвет (256-цветная палитра) задаётся как 38;5;<n> для текста и 48;5;<n> для фона, где n — число от 0 до 255. TrueColor (24-битный) — 38;2;<r>;<g>;<b> (аналогично для фона — 48;2;...). Поддержка TrueColor зависит от терминала.

Режимы и дополнительные команды

Применение

Escape-последовательности ANSI широко используются в:

Поддержка в операционных системах

Ограничения и особенности

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →