🐧 Изменение цвета вывода команды echo

by itisgood

В UNIX-подобных операционных системах команда echo используется для вывода строки символов на терминал.

Обычно цвет вывода команды echo повторяет тему терминала, в этом нет ничего необычного.

Но если вы хотите, вы можете изменить цвет выводимого текста команды echo в Linux.

Почему вы хотите это сделать?

Для этого может быть несколько причин.

Например, если вы пишете скрипт, в котором есть шаг, где нужно предупредить пользователя, использование вывода красного цвета может быть полезным.

Сейчас я расскажу вам, как можно изменить цвет текста с черного или белого на другой, например, желтый, красный, зеленый.

Эскейп-коды ANSI для цветного вывода

Чтобы изменить цвет вывода команды echo, необходимо использовать управляющие последовательности.

Популярный пример управляющей последовательности, которую вы, возможно, использовали в прошлом, это то, что мы используем для новой строки, ‘\n’.

Аналогично, существуют управляющие последовательности и для задания цветного вывода.

Ниже приведено несколько кодов ANSI для каждого цвета:

Black        0;30     Dark Gray     1;30
Red          0;31     Light Red     1;31
Green        0;32     Light Green   1;32
Brown/Orange 0;33     Yellow        1;33
Blue         0;34     Light Blue    1;34
Purple       0;35     Light Purple  1;35
Cyan         0;36     Light Cyan    1;36
Light Gray   0;37     White         1;37

Вы можете использовать эти коды с помощью ‘\033[‘, за которым следует ANSI-код выбранного вами цвета и, наконец, ‘m’.

Ниже приведено несколько примеров того, как использовать код цвета ANSI:

R='\033[0;31m'   #'0;31' is Red's ANSI color code
G='\033[0;32m'   #'0;32' is Green's ANSI color code
Y='\033[1;32m'   #'1;32' is Yellow's ANSI color code
B='\033[0;34m'   #'0;34' is Blue's ANSI color code

Использование этого символа похоже на то, как вы используете обратный слеш ‘\’ с ‘n’ для обозначения новой строки.

Цветовое оформление вывода в команде echo

Вы можете использовать указанные цвета в качестве “переменной” в команде echo и указывать их перед любым текстом, чтобы текст отображался с указанным цветом в выводе терминала.

Если вы используете специальные управляющие последовательности, такие как ‘\n’, ‘\t’, или эти управляющие последовательности для цветов в команде echo, пожалуйста, убедитесь, что вы используете флаг “-e” в команде echo.

В этом примере я объявил две переменные с кодами цветов.

Первая – для красного цвета, а ‘NOCOLOR’ – для того, чтобы остановить красный цвет и переключиться обратно на цвет по умолчанию.

Как вы можете видеть, он отображал текст ‘love’ красным цветом.

Я использовал его непосредственно в оболочке.

Вы можете поместить его в сценарий таким же образом:

#!/bin/bash

RED='\033[0;31m'
NOCOLOR='\033[0m'
echo -e "I ${RED}love${NOCOLOR} Linux"

Вы также можете добавить цвет к выводу printf.

Если вам нужна отформатированная строка, лучше использовать команду printf вместо команды echo.

После того как вы определите управляющие последовательности цвета – точно такие же, как для echo, – вы можете использовать их и в printf.

Здесь я сделал то же самое, что и в случае с echo, я указал и использовал переменную ‘NOCOLOR’, чтобы прекратить использование красного цвета и переключиться обратно на цвет по умолчанию после слова “love”.

Бонусный совет: Используйте онлайн-инструмент для генерации цветов

Пользователь GitHub Gbox4 создал чрезвычайно полезный веб-сайт под названием “ANSI escape code generator“, который помогает генерировать эти управляющие последовательности для вас.

Он позволяет выбрать один из множества цветов для фона и переднего плана текста (цвет текста), стили – жирный, курсив, подчеркивание или зачеркивание.

Затем вы можете легко сохранить этот автоматически сгенерированный код в переменную bash для дальнейшего использования.

Заключение

Теперь, когда вы знаете, как добавить цвета в вывод команды echo, вы можете сделать свои cкрипты bash более полезными и привлекательными.

Поскольку команда printf более предсказуема, позволяет форматировать наш вывод и очень настраиваема, если у вас есть конкретная задача, я бы рекомендовал использовать printf.

Если же вы решаете простую задачу, используйте команду echo.

см. также:

 

You may also like

Leave a Comment