Изменение цвета текста в строке?
Краткий вопрос:
Используя 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
И, конечно же, вы можете создавать [модифицированные] переменные, чтобы выполнять то, что вы хотите.