Форум » Программы » "Цветные" сценарии » Ответить

"Цветные" сценарии

CATER: Гы искал как в баше жирный шрифт сделать и во чо нашол. http://gazette.linux.ru.net/rus/articles/abs-guide/x13966.html 33.5. "Цветные" сценарии Для установки атрибутов отображения информации на экране, таких как: жирный текст, цвет символов, цвет фона и т.п., с давних пор используются ANSI [1] escape-последовательности. Эти последовательности широко используются в пакетных файлах DOS, эти же последовательности используются и в сценариях Bash. Пример 33-9. "Цветная" адресная книга #!/bin/bash # ex30a.sh: Версия сценария ex30.sh, с добавлением цвета . # Грубый пример базы данных clear # Очистка экрана echo -n " " echo -e '\E[37;44m'"\033[1mСписок\033[0m" # Белый текст на синем фоне echo; echo echo -e "\033[1mВыберите интересующую Вас персону:\033[0m" # Жирный шрифт tput sgr0 echo "(Введите только первую букву имени.)" echo echo -en '\E[47;34m'"\033[1mE\033[0m" # Синий tput sgr0 # сброс цвета echo "vans, Roland" # "[E]vans, Roland" echo -en '\E[47;35m'"\033[1mJ\033[0m" # Пурпурный tput sgr0 echo "ones, Mildred" echo -en '\E[47;32m'"\033[1mS\033[0m" # Зеленый tput sgr0 echo "mith, Julie" echo -en '\E[47;31m'"\033[1mZ\033[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 "revans@zzy.net" 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 "milliej@loisaida.com" echo "Подружка" echo "День рождения: 11 февраля" ;; # Информация о Smith и Zane будет добавлена позднее. * ) # Выбор по-умолчанию. # "Пустой" ввод тоже обрабатывается здесь. echo echo "Нет данных." ;; esac tput sgr0 # Сброс цвета echo exit 0 Самая простая и, на мой взгляд, самая полезная escape-последовательность -- это "жирный текст", \033[1m ... \033[0m. Здесь, комбинация \033 представляет escape-символ, кобинация "[1" -- включает вывод жирным текстом, а "[0" -- выключает. Символ "m" -- завершает каждую из escape-последовательностей. bash$ echo -e "\033[1mЭто жирный текст.\033[0m" Простая escape-последовательность, которая управляет атрибутом подчеркивания (в rxvt и aterm). bash$ echo -e "\033[4mЭто подчеркнутый текст.\033[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 Пример 33-10. Вывод цветного текста #!/bin/bash # color-echo.sh: Вывод цветных сообщений. black='\E[30;47m' red='\E[31;47m' green='\E[32;47m' yellow='\E[33;47m' blue='\E[34;47m' magenta='\E[35;47m' cyan='\E[36;47m' white='\E[37;47m' cecho () # Color-echo. # Аргумент $1 = текст сообщения # Аргумент $2 = цвет { local default_msg="Нет сообщений." # Не обязательно должна быть локальной. message=${1:-$default_msg} # Текст сообщения по-умолчанию. color=${2:-$black} # Цвет по-умолчанию черный. echo -e "$color" echo "$message" tput sgr0 # Восстановление первоначальных настроек терминала. return } # Попробум что-нибудь вывести. # ---------------------------------------------------- cecho "Синий текст..." $blue cecho "Пурпурный текст." $magenta cecho "Позеленевший от зависти." $green cecho "Похоже на красный?" $red cecho "Циан, более известный как цвет морской волны." $cyan cecho "Цвет не задан (по-умолчанию черный)." # Аргумент $color отсутствует. cecho "\"Пустой\" цвет (по-умолчанию черный)." "" # Передан "пустой" аргумент цвета. cecho # Ни сообщение ни цвет не переданы. cecho "" "" # Функции переданы "пустые" аргументы $message и $color. # ---------------------------------------------------- echo exit 0 # Упражнения: # --------- # 1) Добавьте в функцию 'cecho ()' возможность вывода "жирного текста". # 2) Добавьте возможность управления цветом фона. Однако, как обычно, в бочке меда есть ложка дегтя. Escape-последовательности ANSI совершенно не переносимы. Вывод в одном эмуляторе терминала (или в консоли) может разительно отличаться от вывода в другом эмуляторе. "Расцвеченные" сценарии, дающие изумительно красивый вывод текста на одном терминале, могут давать совершенно нечитаемый текст на другом. Это ставит под сомнение практическую ценность "расцвечивания" вывода в сценариях, низводя ее до уровня никчемной "игрушки". Moshe Jacobson разработал утилиту color (http://runslinux.net/projects/color), которая значительно упрощает работу с ANSI escape-последовательностями, заменяя, только что обсуждавшиеся, неуклюжие конструкции, логичным и понятным синтаксисом. Notes [1] ANSI -- аббревиатура от American National Standards Institute.

Ответов - 0



полная версия страницы