Задача: Раскрасить текстовую строку выводимую на экран через команду echo

Что нужно:

1) man echo http://www.opennet.ru/man.shtml?topic=echo&category=1

Из него нам пригодится:

echo -e # ключ -e в комманде echo включает отображение "backslash escapes"; например \n - переход на следующую строку, \t -табуляция
echo -n # ключ -n в команде echo сигнализирует, что после вывода информации не нужно переходить на следующую строку.
echo -en # в нашем случае поможет раскрасить вывод текста.

2) Хорошая статья с примерами «Управление консолью Linux» RUS http://c-reaction.net/content/204

Хорошая статья с примерами «Colorizing Scripts» ENG http://www.faqs.org/docs/abs/HTML/colorizing.html

Для начала одним глазом хотябы посмотрим на man echo rus, а потом рассмотрим как использовать цвет http://www.opennet.ru/man.shtml?topic=echo&category=1

Переходим к Управлению цветом:

tput sgr0 Возврат цвета в "нормальное" состояние \033[0m все атрибуты по умолчанию \033[1m жирный шрифт (интенсивный цвет) \033[2m полу яркий цвет (тёмно-серый, независимо от цвета) \033[4m подчеркивание \033[5m мигающий \033[7m реверсия (знаки приобретают цвет фона, а фон -- цвет знаков) \033[22m установить нормальную интенсивность \033[24m отменить подчеркивание \033[25m отменить мигание \033[27m отменить реверсию \033[30 чёрный цвет знаков \033[31 красный цвет знаков \033[32 зелёный цвет знаков \033[33 желтый цвет знаков \033[34 синий цвет знаков \033[35 фиолетовый цвет знаков \033[36 цвет морской волны знаков \033[37 серый цвет знаков \033[40 чёрный цвет фона \033[41 красный цвет фона \033[42 зелёный цвет фона \033[43 желтый цвет фона \033[44 синий цвет фона \033[45 фиолетовый цвет фона \033[46 цвет морской волны фона \033[47 серый цвет фона

Таблица цветов и фонов:

Цвет	Код	Код фона
black	30 40	\033[30m \033[40m
red	31 41	\033[31m \033[41m
green	32 42	\033[32m \033[42m
yellow	33 43	\033[33m \033[43m
blue	34 44	\033[34m \033[44m
magenta	35 45	\033[35m \033[45m
cyan	36 46	\033[36m \033[46m
grey	37 47	\033[37m \033[47m

Допускается объединение этих управляющих последовательностей. Например \033[1m\033[5m\033[36m может быть заменено эквивалентной последовательностью \033[1;5;36m.

Небольшой скрипт шпаргалка по цветам showcolor.sh:

#!/bin/bash echo -e "\033[00;30m 00;30m \033[00m \033[02;30m 02;30m \033[00m \033[01;30m 01;30m \033[00m \033[01;40m 01;40m \033[00m" echo -e "\033[00;31m 00;31m \033[00m \033[02;31m 02;31m \033[00m \033[01;31m 01;31m \033[00m \033[01;41m 01;41m \033[00m" echo -e "\033[00;32m 00;32m \033[00m \033[02;32m 02;32m \033[00m \033[01;32m 01;32m \033[00m \033[01;42m 01;42m \033[00m" echo -e "\033[00;33m 00;33m \033[00m \033[02;33m 02;33m \033[00m \033[01;33m 01;33m \033[00m \033[01;43m 01;43m \033[00m" echo -e "\033[00;34m 00;34m \033[00m \033[02;34m 02;34m \033[00m \033[01;34m 01;34m \033[00m \033[01;44m 01;44m \033[00m" echo -e "\033[00;35m 00;35m \033[00m \033[02;35m 02;35m \033[00m \033[01;35m 01;35m \033[00m \033[01;45m 01;45m \033[00m" echo -e "\033[00;36m 00;36m \033[00m \033[02;36m 02;36m \033[00m \033[01;36m 01;36m \033[00m \033[01;46m 01;46m \033[00m" echo -e "\033[00;37m 00;37m \033[00m \033[02;37m 02;37m \033[00m \033[01;37m 01;37m \033[00m \033[01;47m 01;47m \033[00m"

Пример:

#!/bin/sh # # скрипт выводит на экран сообщение с использованием цвета # echo -en "\033[37;1;41m Внимание \033[0m"

Еще пример:

#!/bin/sh # # скрипт запускает копию командного интерпретатора sh # с цветным приглашением # export PS1="\[\033[1;30m\][\[\033[0m\]\t\[\033[1;30m\];\ \[\033[0m\]\W\[\033[1;30m\]]\[\033[36;1m\]|\[\033[0m\] " echo "Now runing a new copy of shell width color prompt" echo -en "use \033[1;36mexit\033[0m command or" echo -e "\033[1;36m^D\033[0m to return back" sh # # обратите внимание на то, что управляющие последовательности # заключены в скобки "\[" и "\]" # Это сделано для того, чтобы shell не учитывал их при # оценке длины строки. # В противном случае длинные строки будут переноситься неверно. #

Для удобства пользвания можно цвет и доп. свойства назначить переменным:

RED='\033[0;31m' # ${RED} GREEN='\033[0;32m' # ${GREEN}

Файл .sh должен быть в формате UNIX и с кодировкой UTF-8

Ну и напоследок — один хороший пример со всеми плюшками:

#!/bin/sh # echo подсветка # echo color # Скрипт выводит на экран список меню clear # Очистка экрана #Памятка, Таблица цветов и фонов #Цвет код код фона #black 30 40 \033[30m \033[40m #red 31 41 \033[31m \033[41m #green 32 42 \033[32m \033[42m #yellow 33 43 \033[33m \033[43m #blue 34 44 \033[34m \033[44m #magenta 35 45 \033[35m \033[45m #cyan 36 46 \033[36m \033[46m #white 37 47 \033[37m \033[47m # Дополнительные свойства для текта: BOLD='\033[1m' # ${BOLD} # жирный шрифт (интенсивный цвет) DBOLD='\033[2m' # ${DBOLD} # полу яркий цвет (тёмно-серый, независимо от цвета) NBOLD='\033[22m' # ${NBOLD} # установить нормальную интенсивность UNDERLINE='\033[4m' # ${UNDERLINE} # подчеркивание NUNDERLINE='\033[4m' # ${NUNDERLINE} # отменить подчеркивание BLINK='\033[5m' # ${BLINK} # мигающий NBLINK='\033[5m' # ${NBLINK} # отменить мигание INVERSE='\033[7m' # ${INVERSE} # реверсия (знаки приобретают цвет фона, а фон -- цвет знаков) NINVERSE='\033[7m' # ${NINVERSE} # отменить реверсию BREAK='\033[m' # ${BREAK} # все атрибуты по умолчанию NORMAL='\033[0m' # ${NORMAL} # все атрибуты по умолчанию # Цвет текста: BLACK='\033[0;30m' # ${BLACK} # чёрный цвет знаков RED='\033[0;31m' # ${RED} # красный цвет знаков GREEN='\033[0;32m' # ${GREEN} # зелёный цвет знаков YELLOW='\033[0;33m' # ${YELLOW} # желтый цвет знаков BLUE='\033[0;34m' # ${BLUE} # синий цвет знаков MAGENTA='\033[0;35m' # ${MAGENTA} # фиолетовый цвет знаков CYAN='\033[0;36m' # ${CYAN} # цвет морской волны знаков GRAY='\033[0;37m' # ${GRAY} # серый цвет знаков # Цветом текста (жирным) (bold) : DEF='\033[0;39m' # ${DEF} DGRAY='\033[1;30m' # ${DGRAY} LRED='\033[1;31m' # ${LRED} LGREEN='\033[1;32m' # ${LGREEN} LYELLOW='\033[1;33m' # ${LYELLOW} LBLUE='\033[1;34m' # ${LBLUE} LMAGENTA='\033[1;35m' # ${LMAGENTA} LCYAN='\033[1;36m' # ${LCYAN} WHITE='\033[1;37m' # ${WHITE} # Цвет фона BGBLACK='\033[40m' # ${BGBLACK} BGRED='\033[41m' # ${BGRED} BGGREEN='\033[42m' # ${BGGREEN} BGBROWN='\033[43m' # ${BGBROWN} BGBLUE='\033[44m' # ${BGBLUE} BGMAGENTA='\033[45m' # ${BGMAGENTA} BGCYAN='\033[46m' # ${BGCYAN} BGGRAY='\033[47m' # ${BGGRAY} BGDEF='\033[49m' # ${BGDEF} tput sgr0 # Возврат цвета в "нормальное" состояние #Начало меню echo "" echo -n " " echo -e "${BOLD}${BGMAGENTA}${LGREEN} Меню DNS323 ${NORMAL}" echo "" echo -en "${LYELLOW} 1 ${LGREEN} Комманды для удобной работы в telnet ${GRAY}(Выполнить?)${NORMAL}\n" echo "" echo -en "${LYELLOW} 2 ${LGREEN} Пути к папкам & Изменение прав доступа ${GRAY}(Комманды)${NORMAL}\n" echo "" echo -en "${LYELLOW} 3 ${LGREEN} Transmission (${GREEN}Start${NORMAL}, ${LRED}Stop${NORMAL}, ${CYAN}Upgrade${NORMAL}) ${GRAY}(Меню)${NORMAL}\n" echo "" echo -en "${LYELLOW} 4 ${LGREEN} Копирование (cp & rsync) ${GRAY}(Комманды)${NORMAL}\n" echo "" echo -en "${LYELLOW} 5 ${LGREEN} Создание ссылки на файл или папку ${GRAY}(Комманды)${NORMAL}\n" echo "" echo -en "${LYELLOW} 6 ${LGREEN} Установка из fun-plug & IPKG ${GRAY}(Комманды)${NORMAL}\n" echo "" echo -en "${LYELLOW} 7 ${LGREEN} Показать Трафик (${LYELLOW} n${LGREEN}load) ${GRAY}(Выполнить?)${NORMAL}\n" echo "" echo -en "${LYELLOW} 8 ${LGREEN} Диспетчер задач (${LYELLOW} h${LGREEN}top) ${GRAY}(Выполнить?)${NORMAL}\n" echo "" echo -en "${LYELLOW} 9 ${LGREEN} Midnight Commander (${LYELLOW} m${LGREEN}c) ${GRAY}(Выполнить?)${NORMAL}\n" echo "" echo -en "${LMAGENTA} q ${LGREEN} Выход ${NORMAL}\n" echo "" echo "(Введите пожалуйта номер пункта, чтобы выполнить комманды этого пункта, любой другой ввод, Выход)" echo "" tput sgr0