Изменение цвета текста в строке?

Краткий вопрос:

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

Т.е.; напечатать слово в строке, изменить цвет текста, повторить?

1 ответ

Решение

Escape-последовательности ANSI

Вы можете использовать escape-последовательности ANSI. Он должен работать на текстовых экранах, а также в большинстве эмуляторов окон терминала Linux.

Смотрите эту ссылку для деталей,

https://en.wikipedia.org/wiki/ANSI_escape_code

Пример 1: белый текст на черном фоне

echo -e "\0033[37;40m###############\0033[0m"

Пример 2: черный текст на серовато-белом фоне

echo -e "\0033[30;47m###############\0033[0m"

Пример 3: Использование переменных inversvid, greenback, blueback а также resetvid

inversvid="\0033[7m"
resetvid="\0033[0m"
greenback="\0033[1;37;42m"
blueback="\0033[1;37;44m"
echo -e "$inversvid Now it is inverse colours $resetvid"
echo -e "$greenback Now it is greenback $resetvid and $blueback now blueback $resetvid"

Объявить и сохранить переменные

Пример основных цветовых переменных ANSI, которые я использую в скриптах оболочки bash и которые вы можете найти полезными,

inversvid="\0033[7m"
resetvid="\0033[0m"
redback="\0033[1;37;41m"
greenback="\0033[1;37;42m"
blueback="\0033[1;37;44m"

Пример расширенной переменной цвета ANSI (которая почти соответствует цвету логотипа mkusb),

logoansi="\0033[38;5;0;48;5;148m"

Расширенные цвета ANSI работают в большинстве эмуляторов окон терминала, но не на текстовых экранах, где цвет по умолчанию равен "ближайшему основному цвету".


  • Объявлять и хранить переменные в сценарии оболочки bash просто (ближе к началу, по крайней мере, до их использования).
  • Если вы хотите использовать их в интерактивном режиме, вы можете объявить и сохранить переменные в файле конфигурации ~/.bashrc

И, конечно же, вы можете создавать [модифицированные] переменные, чтобы выполнять то, что вы хотите.

Другие вопросы по тегам