Книга: Искусство программирования на языке сценариев командной оболочки

Пример 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"


Ключ -e, в команде echo, разрешает интерпретацию escape-последовательностей.

Другие 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

Оглавление книги


Генерация: 1.137. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз