На главную

Справочники

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~ и не исполняется построчно.