Благодаря применению цвета можно придать экрану, где. отображается поток ввода, более привлекательный вид. При работе с цветами используется стандарт ANSI. Однако не все цвета можно применить во всех системах. Предлагаем перечень наиболее часто употребляемых цветов.
Цвета переднего плана
Значение | Цвет |
30 | черный |
31 | красный |
32 | зеленый |
33 | желтый (или коричневый) |
34 | голубой |
35 | пурпурный |
36 | синий (циан) |
37 | белый (или серый) |
Фоновые цвета
Значение | Цвет |
40 | черный |
41 | красный |
42 | зеленый |
43 | желтый (или коричневый) |
44 | голубой |
45 | пурпурный |
46 | синий (циан) |
47 | белый (или серый) |
Для отображения цветов переднего плана и фоновых цветов применяется следующий формат:
Для генерирования цвета управляющие символы встраиваются в конструкцию echo. Данный метод применяется при работе с цветным терминалом и произвольной системой. Как и в случае с управляющими символами, цвета можно генерировать с помощью escape–последовательностей, встраиваемых в конструкцию echo. Для создания черного фона с передним планом зеленого цвета воспользуйтесь командой:
Linux/BSD: echo -e "\033[40;32m"
System V: echo "\033[40;32m"
Обобщенный метод: echo "
При использовании обобщенного метода, т. е. комбинации клавиш [Ctrl+V], нажмите клавишу [Esc], затем введите символы [40;32m. Обобщенный метод и применяется далее в книге.
Возможно, лучше поместить конструкции echo, отвечающие за воспроизведение цвета, в конструкцию case, а затем оформить все это в виде функции. Ниже, приводится функция цвета case.
colour ()
(
# формат цвет_фона; цвет_переднего_планаm
case $1 in
black_green)
echo '^[[40;32m';;
black_yellow)
echo '^[[40;33m';;
black_white)
echo '^[[40;37m';;
black_cyan)
echo '^[[40;36m';;
red_yellow)
echo '^[[41;33m';;
black_blue)
echo '^[[40;34m';;
esac
}
Чтобы задать красный цвет фона и желтый цвет переднего плана, примените команду:
colour red_yellow
Для использования цветов в сценариях выполните следующие действия:
colour whatever echo something
# измените на другой цвет
colour whatever
echo something
Обычно по умолчанию в качестве цветов экрана используются черный и белый. Рассмотрим, как изменить эту установку, чтобы фоновым цветом был черный, а цветом переднего плана — зеленый. С этой целью в файл .profile достаточно добавить конструкцию echo, которая создает требуемую комбинацию.
Ниже приводится пример кода для управления экраном.
$ pg colour_scr
#!/bin/sh
# colour_scr
tput init
MYDATE=`date +%D`
colour ()
{
# формат цвет_фона; цвет_лереднего_планаm
case $1 in
black_green)
echo '^[[40;32m' ;;
black_yellow)
echo '^[[40;33m' ;;
black_white)
echo '^[[40;37m' ;;
black_cyan)
echo '^[[40;36m' ;;
black_red)
echo '^[[40;31m' ;;
esac
}
xy() #xy
• для вызова: ху строка, столбец,"text"
• переход к координатам ху на экране {
#_R=row, _C=column
_R=$1
_C=$2
_TEXT=S3
tput cup $_R $_C
echo -n $_TEXT
}
center()
{
center
#центрирование строки текста на экране
#для вызова: center "строка" номер_строки
_STR=$1
_ROW=$2
# неудачный способ получения длины строки
LEN=`echo $_STR | wc -с`
COLS=`tput cols`
HOLD_COL=`expr $COLS - $LEN`
NEW_COL=`expr $HOLD_COL / 2`
tput cup $_ROW $NEW_COL
echo -n $_STR
}
tput clear
colour red_yellow
xy 2 3 "USER: $LOGNAME"
colour black_cyan
center "ADD A NEW WARP DRIVE TO A STAR SHIP" 3
echo -e "\f\f"
center " " 4
colour black_yeliow
xy 5 1 " "
xy 7 1 "_____"
xy 21 1 " "
center "Star Date $MYDATE " 22