🎓 Bash программирование: ANSI Escape Sequence для изменения цвета текста и фона.
ANSI Escape Sequence — это последовательность символов, используемая для управления форматированием текста, цветом и поведением вывода в терминалах, поддерживающих стандарт ANSI (American National Standards Institute). Эти последовательности являются частью стандартов, которые позволяют терминалам и программному обеспечению взаимодействовать друг с другом для управления отображением текста, перемещения курсора и различных атрибутов вывода.
ANSI escape sequences являются мощным инструментом для управления выводом в терминалах и могут быть использованы для создания более визуально привлекательных пользовательских интерфейсов в скриптах и программах, позволяя разработчикам создавать цветное и форматированное текстовое отображение. Однако стоит отметить, что не все терминалы поддерживают все функции ANSI escape sequences, и их возможности могут варьироваться в зависимости от используемого программного обеспечения.
Структура ANSI Escape Sequence.
ANSI escape sequences начинаются с символа Escape (ESC
, \033
или \e
, в зависимости от языка программирования) и за ним следует символ [
(открывающая квадратная скобка), после чего идут параметры и заканчивается финальным символом m
для атрибутов текста и некоторыми другими символами для управления курсором и экрана.
Основная форма выглядит так:
ESC [ параметр1; параметр2; ... ; параметрN m
ESC
— это символ Escape, который обычно представлен как \033
или \e
.
[
— открывающая квадратная скобка.
параметры
— числа, разделенные точками с запятой, которые задают различные опции.
m
— использует для определения цвета и стиля текста.
Коды цветов текстов и фонов.
Вот полный список атрибутов, включая цветные коды и другие стили:
Стиль.
- Сброс всех атрибутов:
\e[0m
- Жирный:
\e[1m
- Угасший (полупрозрачный):
\e[2m
- Курсив:
\e[3m
- Подчеркнутый:
\e[4m
- Мигающий (не поддерживается во всех терминалах):
\e[5m
- Мерцающий (не поддерживается во всех терминалах):
\e[6m
- Инверсный (меняет цвета текста и фона):
\e[7m
- Скрытый (текст становится невидимым):
\e[8m
Примеры.
$ mcedit ~/stili_text.sh
#!/bin/bash
# Сброс всех атрибутов
echo -e "\e[0mСброс всех атрибутов\e[0m"
# Жирный
echo -e "\e[1mЖирный текст\e[0m"
# Угасший (полупрозрачный)
echo -e "\e[2mУгасший текст\e[0m"
# Курсив
echo -e "\e[3mКурсивный текст\e[0m"
# Подчеркнутый
echo -e "\e[4mПодчеркнутый текст\e[0m"
# Мигающий (не поддерживается во всех терминалах)
echo -e "\e[5mМигающий текст\e[0m"
# Мерцающий (некоторые терминалы могут не поддерживать)
echo -e "\e[6mМерцающий текст\e[0m"
# Инверсный (меняет цвета текста и фона)
echo -e "\e[7mИнверсный текст\e[0m"
# Скрытый (текст становится невидимым)
echo -e "\e[8mСкрытый текст\e[0m"
$ bash ~/stili_text.sh
Ответ:
Поддержка некоторых атрибутов может зависеть от терминала, который вы используете. Например, “мигающий” и “мерцающий” текст может не поддерживаться в большинстве современных терминалов.
Цвета текста.
- Черный:
\e[30m
- Красный:
\e[31m
- Зеленый:
\e[32m
- Желтый:
\e[33m
- Синий:
\e[34m
- Фиолетовый:
\e[35m
- Бирюзовый:
\e[36m
- Белый:
\e[37m
Примеры.
$ mcedit ~/colors_of_text.sh
#!/bin/bash
# Черный
echo -e "\e[30mЧерный текст\e[0m"
# Красный
echo -e "\e[31mКрасный текст\e[0m"
# Зеленый
echo -e "\e[32mЗеленый текст\e[0m"
# Желтый
echo -e "\e[33mЖелтый текст\e[0m"
# Синий
echo -e "\e[34mСиний текст\e[0m"
# Фиолетовый
echo -e "\e[35mФиолетовый текст\e[0m"
# Бирюзовый
echo -e "\e[36mБирюзовый текст\e[0m"
# Белый
echo -e "\e[37mБелый текст\e[0m"
$ bash ~/colors_of_text.sh
Ответ:
После каждого вывода цвета используется e[0m
, чтобы сбросить атрибуты, иначе следующий текст будет наследовать предыдущий цвет.
Яркие цвета текста.
- Яркий черный (серый):
\e[90m
- Яркий красный:
\e[91m
- Яркий зеленый:
\e[92m
- Яркий желтый:
\e[93m
- Яркий синий:
\e[94m
- Яркий фиолетовый:
\e[95m
- Яркий бирюзовый:
\e[96m
- Яркий белый:
\e[97m
Примеры.
$ mcedit ~/bright_text_colors.sh
#!/bin/bash
# Яркий черный (серый)
echo -e "\e[90mЯркий черный (серый) текст\e[0m"
# Яркий красный
echo -e "\e[91mЯркий красный текст\e[0m"
# Яркий зеленый
echo -e "\e[92mЯркий зеленый текст\e[0m"
# Яркий желтый
echo -e "\e[93mЯркий желтый текст\e[0m"
# Яркий синий
echo -e "\e[94mЯркий синий текст\e[0m"
# Яркий фиолетовый
echo -e "\e[95mЯркий фиолетовый текст\e[0m"
# Яркий бирюзовый
echo -e "\e[96mЯркий бирюзовый текст\e[0m"
# Яркий белый
echo -e "\e[97mЯркий белый текст\e[0m"
$ bash ~/bright_text_colors.sh
Ответ:
Каждый вывод цвета заканчивается e[0m
, чтобы сбросить атрибуты и вернуться к стандартному цвету терминала после каждого сообщения.
Цвета фона.
- Черный:
\e[40m
- Красный:
\e[41m
- Зеленый:
\e[42m
- Желтый:
\e[43m
- Синий:
\e[44m
- Фиолетовый:
\e[45m
- Бирюзовый:
\e[46m
- Белый:
\e[47m
Примеры.
$ mcedit ~/colors_of_background.sh
#!/bin/bash
# Черный фон
echo -e "\e[40mТекст на черном фоне\e[0m"
# Красный фон
echo -e "\e[41mТекст на красном фоне\e[0m"
# Зеленый фон
echo -e "\e[42mТекст на зеленом фоне\e[0m"
# Желтый фон
echo -e "\e[43mТекст на желтом фоне\e[0m"
# Синий фон
echo -e "\e[44mТекст на синем фоне\e[0m"
# Фиолетовый фон
echo -e "\e[45mТекст на фиолетовом фоне\e[0m"
# Бирюзовый фон
echo -e "\e[46mТекст на бирюзовом фоне\e[0m"
# Белый фон
echo -e "\e[47mТекст на белом фоне\e[0m"
$ bash ~/colors_of_background.sh
Ответ:
Каждый вывод цвета заканчивается e[0m
, чтобы сбросить атрибуты и вернуть терминал к стандартному фону после каждого сообщения.
Яркие цвета фона.
- Яркий черный:
\e[100m
- Яркий красный:
\e[101m
- Яркий зеленый:
\e[102m
- Яркий желтый:
\e[103m
- Яркий синий:
\e[104m
- Яркий фиолетовый:
\e[105m
- Яркий бирюзовый:
\e[106m
- Яркий белый:
\e[107m
Примеры.
$ mcedit ~/bright_background_colors.sh
#!/bin/bash
# Яркий черный фон
echo -e "\e[100mТекст на ярком черном (сером) фоне\e[0m"
# Яркий красный фон
echo -e "\e[101mТекст на ярком красном фоне\e[0m"
# Яркий зеленый фон
echo -e "\e[102mТекст на ярком зеленом фоне\e[0m"
# Яркий желтый фон
echo -e "\e[103mТекст на ярком желтом фоне\e[0m"
# Яркий синий фон
echo -e "\e[104mТекст на ярком синем фоне\e[0m"
# Яркий фиолетовый фон
echo -e "\e[105mТекст на ярком фиолетовом фоне\e[0m"
# Яркий бирюзовый фон
echo -e "\e[106mТекст на ярком бирюзовом фоне\e[0m"
# Яркий белый фон
echo -e "\e[107mТекст на ярком белом фоне\e[0m"
$ bash ~/bright_background_colors.sh
Ответ:
Каждый вывод цвета заканчивается e[0m
, чтобы сбросить атрибуты и вернуть терминал к стандартному фону после каждого сообщения.
Вы можете комбинировать коды, чтобы добиться желаемого эффекта.
Сброс цвета.
После каждого изменения цвета рекомендуется сбросить его в стандартное состояние с помощью \e[0m
:
- Сброс:
\e[0m
Сброс цветов:
$ echo -e "\e[0m"
Ответ:
Очистить экран:
$ clear
Или сбросить настройки с помощью команды reset
:
$ reset
Примеры использования ANSI Escape Sequences.
Изменение цвета текста.
В терминале вы можете использовать следующий код для изменения цвета текста:
$ echo -e "\033[31mЭто красный текст\033[0m"
Ответ:
\033[31m
— устанавливает красный цвет текста.
\033[0m
— сбрасывает все атрибуты, возвращаясь к стандартному цвету.
Форматирование текста.
Вы можете сделать текст жирным или подчеркнутым, используя соответствующие коды:
$ echo -e "\033[1mЖирный текст\033[0m"
Ответ:
$ echo -e "\033[4mПодчеркнутый текст\033[0m"
Ответ:
Цвета фона.
Вы также можете изменить цвет фона текста:
$ echo -e "\033[44mТекст на синем фоне\033[0m"
Ответ:
Здесь 44
устанавливает цвет фона на синий.
Перемещение курсора.
ANSI escape sequences могут также использоваться для управления курсором.
Очистка экрана и перемещение курсора в верхний левый угол, в отличие от clear
происходит эффект отступа в одну строку от края экрана консоли:
$ echo -e "\033[2J\033[H"
Ответ:
Вот так работает clear
, происходит эффект очищения консоли без отступа в одну строку от края экрана консоли:
$ clear
Ответ:
Применение в скриптах или командах.
Например:
$ echo -e "\e[32mЭто зеленый текст\e[0m"
Ответ:
$ echo -e "\e[41mЭто текст с красным фоном\e[0m"
Ответ:
Пример использования в скрипте.
$ mcedit ~/colors_in_script.sh
#!/bin/bash
echo -e "\e[1;31mЭто жирный красный текст\e[0m"
echo -e "\e[4;34mЭто подчеркнутый синий текст\e[0m"
echo -e "\e[7;32mЭто инверсный зеленый текст на фоне красного\e[41m\e[37m\e[0m"
$ bash ~/colors_in_script.sh
Ответ:
Не забудьте сбросить атрибуты командой \e[0m
, чтобы вернуться к стандартному отображению текста после использования цветного текста в терминале.
Оригиналы источников информации.
- Нет.