#!/bin/sh
#управляющие_клавиши
#для вставки примените последовательность '<CTRL‑V><ESCAPE>sequence'
uparrowkey='^[[А'
downarrowkey='^[[В'
leftarrowkey='^[[D'
rightarrowkey='^[[С'
f1key='^[OP'
f2key='^[OQ'
echo -n " Press a control key then hit return"
read KEY
case $KEY in
$uparrowkey) echo "UP arrow";;
$downarrowkey) echo "DOWN arrow";;
$leftarrowkey) echo "LEFT arrow";;
$rightarrowkey) echo "RIGHT arrow";;
$f1key) echo "F1 key";;
$f2key) echo "F2 key";;
*) echo "unknown key $key";;
esac
21.2.9. Применение различных цветов
Благодаря применению цвета можно придать экрану, где. отображается поток ввода, более привлекательный вид. При работе с цветами используется стандарт ANSI. Однако не все цвета можно применить во всех системах. Предлагаем перечень наиболее часто употребляемых цветов.
Цвета переднего плана
| Значение | Цвет |
| 30 | черный |
| 31 | красный |
| 32 | зеленый |
| 33 | желтый (или коричневый) |
| 34 | голубой |
| 35 | пурпурный |
| 36 | синий (циан) |
| 37 | белый (или серый) |
Фоновые цвета
| Значение | Цвет |
| 40 | черный |
| 41 | красный |
| 42 | зеленый |
| 43 | желтый (или коричневый) |
| 44 | голубой |
| 45 | пурпурный |
| 46 | синий (циан) |
| 47 | белый (или серый) |
Для отображения цветов переднего плана и фоновых цветов применяется следующий формат:
<ESCAPE> [значение_фона; значение переднего плана m
21.2.10. Генерирование цветов
Для генерирования цвета управляющие символы встраиваются в конструкцию echo. Данный метод применяется при работе с цветным терминалом и произвольной системой. Как и в случае с управляющими символами, цвета можно генерировать с помощью escape–последовательностей, встраиваемых в конструкцию echo. Для создания черного фона с передним планом зеленого цвета воспользуйтесь командой:
Linux/BSD: echo -e "\033[40;32m"
System V: echo "\033[40;32m"
Обобщенный метод: echo "<CTRL‑V><ESCAPE>[40;32m"
При использовании обобщенного метода, т. е. комбинации клавиш [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
# неудачный способ получения длины строки