Команда echo -e "\033[31mОшибка\033[0m" в Bash выводит слово «Ошибка» красным цветом — и это самый быстрый способ проверить, поддерживает ли ваш терминал коды управления. Если вместо цветного текста вы видите набор символов вроде [31m, значит, эмулятор терминала не интерпретирует escape-последовательности, и это первое, что нужно диагностировать.

Коды управления терминалом — это невидимые служебные последовательности, которые текстовый терминал воспринимает не как обычные символы, а как команды: изменить цвет, очистить экран, переместить курсор. Они используются в скриптах, логах, консольных утилитах и при разработке CLI-приложений. В этой статье разберём, как устроены эти коды, какие из них стандартизированы, а какие зависят от конкретного эмулятора терминала.

Что такое управляющие коды и как они работают

Терминал исторически был физическим устройством — дисплеем с клавиатурой, подключённым к мейнфрейму. Чтобы программа могла не только печатать текст, но и управлять экраном, производители ввели управляющие последовательности: специальные комбинации байтов, начинающиеся с символа ESC (код 27 в таблице ASCII, шестнадцатеричное 0x1B).

Современные терминалы — это программы-эмуляторы: Windows Terminal, iTerm2, GNOME Terminal, xterm и другие. Все они в той или иной степени воспроизводят поведение классических устройств, чаще всего стандарта ANSI X3.64 и терминала DEC VT100. Когда программа выводит последовательность ESC[2J, эмулятор очищает экран, а когда получает ESC[1;32m — переключает цвет текста на ярко-зелёный.

Символ ESC можно записать в коде по-разному в зависимости от языка и оболочки:

  • 🔹 \033 — восьмеричная запись, работает в Bash и C;
  • 🔹 \x1b — шестнадцатеричная запись, привычна в Python и C;
  • 🔹 \e — сокращение, поддерживаемое в echo -e и многих языках;
  • 🔹 \u001b — Unicode-форма в Python 3 и JavaScript.
💡

Любая ANSI-последовательность начинается с символа ESC (0x1B). Если терминал показывает коды как текст — проблема в эмуляторе или в способе вывода, а не в самих кодах.