|Конституция СОБа|
Проекты: |КИД|
§ Добро пожаловать в свободную зону общения сервиса Borda.ru. На форуме введена премодерация: для регистрации достаточно отправить сообщения и ожидать решения модератора.

► СОБытия:
§ 31 октября 2010 года. Проекты СКБ и РБЦ закрыты

§ 28 ноября 2008 года. Произведена уборка.

§ 20 апреля. Открыта "Стена истории", где любой может ознакомиться с историей СОБа.

§ 30 марта. Открыт новый раздел, где каждый желающий может оставить свою статью о событиях на Борде. "Анонсы: свобода слова в абсолюте"



АвторСообщение



Пост: 41
Получил гражданство СОБа: 18.02.08
Рейтинг: 0
ссылка на сообщение  Отправлено: 20.02.08 21:58. Заголовок: "Цветные" сценарии


Гы искал как в баше жирный шрифт сделать и во чо нашол.


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 
ПрофильЦитата Ответить
Новых ответов нет


Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 1
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация вкл, правка нет



Дизайн кнопок © Веб-студия "К-Дизайн"

Наши друзья:
۩ Хотите, чтобы на этом месте была ваша ссылка?
۩ Игровой форум "Актуальный Актив"
۩ Ролевая игра "The Lord of the Rings"
۩ Развлекательный Форум GG
۩ Comedy Club
۩ A Fire Inside-форум для поклонников AFI
۩ Bahamut's Lair - аниме, манга, ролевая игра
۩ Сайт-форум для молодежи
۩ БЕЗ ПАЛЕВА
۩ Гостевая клана НАВАХУ
۩ Форум об игре TES 3: Morrowind
۩ Форум общения
۩ Клуб горного туризма и альпинизма
۩ Фан клуб Хью Джекмана
۩ Женский форум ОНА
۩ Бесплатные готовые дизайны для форумов от Марка
۩ Форум о заработке с оплатой сообщений
۩ Посиделки у Камина