🎓 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, чтобы вернуться к стандартному отображению текста после использования цветного текста в терминале.

    Оригиналы источников информации.

    1. Нет.
    image_printСКАЧАТЬ ВЕРСИЮ ДЛЯ ПЕЧАТИ

    Вам может также понравиться...

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *