Книга: Искусство программирования на языке сценариев командной оболочки
Пример 33-8. "Цветная" адресная книга
Пример 33-8. "Цветная" адресная книга
#!/bin/bash
# ex30a.sh: Версия сценария ex30.sh, с добавлением цвета .
# Грубый пример базы данных
clear # Очистка экрана
echo -n " "
echo -e 'E[37;44m'"33[1mСписок33[0m"
# Белый текст на синем фоне
echo; echo
echo -e "33[1mВыберите интересующую Вас персону:33[0m"
# Жирный шрифт
tput sgr0
echo "(Введите только первую букву имени.)"
echo
echo -en 'E[47;34m'"33[1mE33[0m" # Синий
tput sgr0 # сброс цвета
echo "vans, Roland" # "[E]vans, Roland"
echo -en 'E[47;35m'"33[1mJ33[0m" # Пурпурный
tput sgr0
echo "ones, Mildred"
echo -en 'E[47;32m'"33[1mS33[0m" # Зеленый
tput sgr0
echo "mith, Julie"
echo -en 'E[47;31m'"33[1mZ33[0m" # Красный
tput sgr0
echo "ane, Morris"
echo
read person
case "$person" in
# Обратите внимание: переменная взята в кавычки.
"E" | "e" )
# Пользователь может ввести как заглавную, так и строчную букву.
echo
echo "Roland Evans"
echo "4321 Floppy Dr."
echo "Hardscrabble, CO 80753"
echo "(303) 734-9874"
echo "(303) 734-9892 fax"
echo "[email protected]"
echo "Старый друг и партнер по бизнесу"
"J" | "j" )
echo
echo "Mildred Jones"
echo "249 E. 7th St., Apt. 19"
echo "New York, NY 10009"
echo "(212) 533-2814"
echo "(212) 533-9972 fax"
echo "[email protected]"
echo "Подружка"
echo "День рождения: 11 февраля"
# Информация о Smith и Zane будет добавлена позднее.
* )
# Выбор по-умолчанию.
# "Пустой" ввод тоже обрабатывается здесь.
echo
echo "Нет данных."
esac
tput sgr0 # Сброс цвета
echo
exit 0
Самая простая и, на мой взгляд, самая полезная escape-последовательность -- это "жирный текст", 33[1m ... 33[0m. Здесь, комбинация 33 представляет escape-символ, кобинация "[1" -- включает вывод жирным текстом, а "[0" -- выключает. Символ "m" -- завершает каждую из escape-последовательностей.
bash$ echo -e "33[1mЭто жирный текст.33[0m"
Простая escape-последовательность, которая управляет атрибутом подчеркивания (в rxvt и aterm).
bash$ echo -e "33[4mЭто подчеркнутый текст.33[0m"
Другие escape-последовательности, изменяющие атрибуты цвета:
bash$ echo -e 'E[34;47mЭтот текст выводится синим цветом.'; tput sgr0
bash$ echo -e 'E[33;44m'"желтый текст на синем фоне"; tput sgr0
Команда tput sgr0 возвращает настройки терминала в первоначальное состояние.
Вывод цветного текста осуществляется по следующему шаблону:.
echo -e 'E[COLOR1;COLOR2mКакой либо текст.'
Где "E[" -- начало escape-последовательности. Числа "COLOR1" и "COLOR2", разделенные точкой с запятой, задают цвет символов и цвет фона, в соответствии с таблицей цветов, приведенной ниже. (Порядок указания цвета текста и фона не имеет значения, поскольку диапазоны числовых значений цвета для текста и фона не пересекаются). Символ "m" -- должен завершать escape-последовательность.
Обратите внимание: одиночные кавычки окружают все, что следует за echo -e.
Числовые значения цвета, приведенные ниже, справедливы для rxvt. Для других эмуляторов они могут несколько отличаться.
Таблица 33-1. Числовые значения цвета в escape-последовательностях
Цвет | Текст | Фон |
---|---|---|
черный | 30 | 40 |
красный | 31 | 41 |
зеленый | 32 | 42 |
желтый | 33 | 43 |
синий | 34 | 44 |
пурпурный | 35 | 45 |
зеленовато-голубой | 36 | 46 |
белый | 37 | 47 |
- 33.5. "Цветные" сценарии
- Пример установочного скрипта
- Пример из практики
- Восстановление "безнадежных" баз данных. InterBase Surgeon
- Основные "рычаги" управления производительностью
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- Примеры получения статистики
- Пример применения метода «пять почему»
- Пример 12-8. Частота встречаемости отдельных слов
- 1.2.5. Пример программы
- Using Double Quotes to Resolve Variables in Strings with Embedded Spaces
- Пример 17-10. Блочный комментарий