Выбрать главу

#!/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

# неудачный способ получения длины строки