Цвет в Bash с использованием ANSI Escape Codes

В Linux терминале (например, Bash) цвет текста и фона управляется с помощью ESC-последовательностей, основанных на ANSI escape codes.

Пример:

  echo -e "\033[31mКрасный текст\033[0m"

Объяснение:

  • \033[ — управляющая последовательность (ESC).В Bash <Esc> последовательность может начинаться на \e, \033,\x1B.
  • 31m — код цвета (в данном случае — красный).
  • \e[0m — сброс оформления.
  • Последовательность закрывается символом m
  • Опция -e у команды echo позволяет парсить escape последовательность.
Код Цвет
30 Черный
31 Красный
32 Зелёный
33 Жёлтый
34 Синий
35 Фиолетовый
36 Голубой
37 Белый

Чтобы получить яркий цвет, добавьте 1; перед кодом:

  echo -e "\e[1;32mЯрко-зелёный\e[0m"
echo -e "\033[38;5;15;48;5;21m Белый текст на синем фоне \033[0m"
Код Цвет фона
40 Чёрный
41 Красный
42 Зелёный
43 Жёлтый
44 Синий
45 Фиолетовый
46 Голубой
47 Белый

Пример:

echo -e "\033[1;4;31mЖирный подчёркнутый красный\033[0m"
Код Стиль
0 Сброс
1 Жирный
4 Подчёркнутый
5 Мигающий

Сохрани как colors.sh:

#!/bin/bash
echo "Таблица базовых цветов ANSI (текст и фон):"
for style in 0 1; do
  echo -e "\n\033[${style}mСтиль: $style (0=обычный, 1=жирный)\033[0m"
  for fg in {30..37}; do
    for bg in {40..47}; do
      echo -en "\033[${style};${fg};${bg}m ${fg};${bg} \033[0m "
    done
    echo
  done
done

\

Сохрани как colors-256.sh:

#!/bin/bash
echo "Таблица 256 ANSI цветов (foreground):"
for i in {0..255}; do
  printf "\033[38;5;%sm%3s\033[0m " "$i" "$i"
  if (( (i + 1) % 16 == 0 )); then
    echo
  fi
done

\

  • Поддержка 256-цветных escape-последовательностей зависит от терминала (например, `xterm`, `gnome-terminal`, `konsole` и др.).
  • Чтобы работало в putty надо указать export TERM='xterm-256color' в .bashrc