В 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.
см. также:
- 📜 Добавление цветов в скрипты Bash
- 🏌 Команда Echo в Linux с примерами
- 🐧 Команда Bash Printf
- 🐧 Команда wait в Linux с примерами
- 🐧 Команда Xargs в Linux