Благодаря применению цвета можно придать экрану, где. отображается поток ввода, более привлекательный вид. При работе с цветами используется стандарт ANSI. Однако не все цвета можно применить во всех системах. Предлагаем перечень наиболее часто употребляемых цветов.

Цвета переднего плана

ЗначениеЦвет
30черный
31красный
32зеленый
33желтый (или коричневый)
34голубой
35пурпурный
36синий (циан)
37белый (или серый)

Фоновые цвета

ЗначениеЦвет
40черный
41красный
42зеленый
43желтый (или коричневый)
44голубой
45пурпурный
46синий (циан)
47белый (или серый)

Для отображения цветов переднего плана и фоновых цветов применяется следующий формат:

[значение_фона; значение переднего плана m

<p><emphasis><strong>21.2.10. Генерирование цветов</strong></emphasis></p>

Для генерирования цвета управляющие символы встраиваются в конструкцию echo. Данный метод применяется при работе с цветным терминалом и произвольной системой. Как и в случае с управляющими символами, цвета можно генерировать с помощью escape–последовательностей, встраиваемых в конструкцию echo. Для создания черного фона с передним планом зеленого цвета воспользуйтесь командой:

Linux/BSD: echo -e "\033[40;32m"

System V: echo "\033[40;32m"

Обобщенный метод: echo "[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

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

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

Перейти на страницу:

Похожие книги