Справочники
ANSI escape-коды
Соберите стиль и цвет — получите готовую escape-последовательность для bash, Python, JS или PowerShell. Ниже — разбор чужого кода, палитра 256 цветов и шпаргалка по курсору, экрану и OSC.
Стиль и цвет текста
Конструктор
Как это выглядит в терминале
Последовательность
\e[1;32mГотовая строка со сбросом в конце
printf '\e[1;32m%s\e[0m\n' 'Сборка прошла'Разбор последовательности
Что значит этот код
- жирный
- текст: цвет 208 из 256 (#ff8700)
Нажмите на цвет — он станет цветом текста
Палитра 256 цветов
0–15 — системные цвета (их вид меняет тема терминала), 16–231 — куб 6×6×6, 232–255 — 24 оттенка серого.
Подставить свои значения
Показано 40 из 40 кодов.
Как устроена последовательность
ESC — символ с кодом 27. Его пишут как \e (bash, printf), \033 (восьмерично), \x1b (Python, C, JS) или \u001b (JS, JSON). CSI — это ESC и открывающая квадратная скобка.
\e[…m
SGR — стиль и цвет текста. Параметры через точку с запятой: \e[1;31m — жирный красный.
\e[0m
Сбросить всё. Без сброса стиль «протекает» в приглашение шелла.
printf '\e[32m%s\e[0m\n' "готово"
printf из bash и GNU coreutils понимает \e; в dash и чистом POSIX sh надёжнее \033. echo — только с -e и не во всех шеллах.
tput setaf 1; tput sgr0
Переносимо через terminfo: красный текст и сброс.
[ -t 1 ] && [ -z "$NO_COLOR" ]
Раскрашивать только в терминал и уважать NO_COLOR: в файле и в CI коды превращаются в мусор.
Стили (SGR)
\e[1m
Жирный; выключить — \e[22m.
\e[2m
Тусклый; выключить — \e[22m.
\e[3m
Курсив; выключить — \e[23m.
\e[4m
Подчёркнутый; выключить — \e[24m.
\e[5m
Мигающий; выключить — \e[25m.
\e[7m
Инверсия; выключить — \e[27m.
\e[8m
Скрытый; выключить — \e[28m.
\e[9m
Зачёркнутый; выключить — \e[29m.
\e[21m
Двойное подчёркивание по ECMA-48, но часть терминалов понимает его как «снять жирный». Лучше не использовать.
\e[53m
Надчёркивание; поддерживается не везде.
\e[4:3m
Волнистое подчёркивание (kitty, WezTerm, VTE, iTerm2).
Цвета
Точный вид 16 базовых цветов задаёт тема терминала. 256 цветов и RGB показываются одинаково везде, где поддерживаются.
\e[30m … \e[37m
Текст: чёрный, красный, зелёный, жёлтый, синий, пурпурный, голубой, белый.
\e[90m … \e[97m
Яркие версии тех же цветов для текста.
\e[40m … \e[47m
Фон базовыми цветами.
\e[100m … \e[107m
Яркий фон.
\e[39m · \e[49m
Вернуть цвет текста / фона по умолчанию.
\e[38;5;208m
Текст цветом из палитры 256 (208 — оранжевый). 16–231 — куб 6×6×6, 232–255 — серые.
\e[48;5;236m
Фон из палитры 256.
\e[38;2;255;100;0m
Текст в truecolor (RGB). Поддержку выдаёт переменная COLORTERM=truecolor.
\e[48;2;30;30;30m
Фон в truecolor.
Курсор и экран
\e[1A · \e[1B
Курсор на n строк вверх / вниз.
\e[1C · \e[1D
Курсор на n колонок вправо / влево.
\e[1G
Курсор в колонку n текущей строки.
\e[1;1H
Курсор в строку и колонку, счёт с единицы; \e[H — в левый верхний угол.
\e[2J
Очистить экран; \e[3J — ещё и историю прокрутки.
\e[K
Стереть строку от курсора до конца; \e[2K — всю строку.
\r\e[K
Вернуться в начало строки и стереть её — основа прогресс-баров.
\e7 · \e8
Запомнить и восстановить позицию курсора (DEC); \e[s и \e[u работают не везде.
\e[?25l · \e[?25h
Спрятать и показать курсор. Прятать — только с trap на выход, иначе курсор пропадёт насовсем.
\e[?1049h · \e[?1049l
Перейти на альтернативный экран и вернуться — как делают vim и less.
\e[6n
Запросить позицию курсора: терминал ответит \e[строка;колонкаR во ввод программы.
Заголовок, ссылки и буфер (OSC)
OSC — ESC и закрывающая скобка; заканчивается BEL (\a) или ST (\e\\).
\e]0;Заголовок\a
Заголовок окна или вкладки терминала.
\e]8;;https://example.com\e\\ссылка\e]8;;\e\\
Кликабельная ссылка с текстом (OSC 8): iTerm2, kitty, WezTerm, GNOME Terminal, Windows Terminal.
\e]52;c;{base64}\a
Положить текст в системный буфер обмена (OSC 52), в том числе через SSH, если терминал разрешает.
\e[?2004h
Режим bracketed paste: вставка приходит обёрнутой в \e[200~ … \e[201~ и не исполняется построчно.