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

Метод shift также позволяет преодолеть ограничения параметров $1…$9, проявляющиеся при их передаче сценариям. При использовании метода shift сценарий просто выполняет "смещение" среди всех вызываемых аргументов, благодаря чему можно выполнять дальнейшую обработку.

ГЛАВА 21

Создание экранного вывода

С помощью shell–сценариев можно создавать профессионального вида экраны, позволяющие реализовать интерактивное взаимодействие пользователя с системой. Для этого достаточно располагать цветным монитором и использовать команду tput.

В главе рассматриваются следующие темы:

   • применение команды tput;

   • использование escape–последовательностей и генерирование управляющих кодов;

   • pабота с цветом.

Известно, что существует три различных варианта команды tput. Наилучшим из них является команда tput GNU. Если в системе отсутствует эта версия команды, загрузите и установите ее. Команда tput использует файл /etc/terminfo или файл /etc/termcap. В shell–сценариях можно применять большинство команд, поддерживаемых терминалом.

Команда tput не распознает настройки цвета. Для работы с цветом используются управляющие символы.

21.1. Применение команды tput

Чтобы применить команду tput, следует инициализировать установки терминала, обращаясь к команде tput с помощью сценариев или командной строки.

$ tput init

Команда tput генерирует три различных потока вывода: строки, числовые и булевы значения (истина/ложь). Далее будут рассмотрены некоторые наиболее часто используемые свойства каждого потока вывода.

21.1.1. Строчный поток вывода данных

Ниже приводятся общие строки из потока вывода:

Название Значение
bel Звуковой сигнал
blink Режим мерцания
bold Двойная интенсивность
civis Скрыть курсор
clear Очистка экрана
сnorm Отобразить курсор
cup Перемещение курсора на экране в позицию x, у
el Очистка до конца строки
ell Очистка к началу строки
smso Переход в режим отступа
rmso Выход из режима отступа
smul Переход в режим подчеркивания
rmul Выход из режима подчеркивания
sc Сохранение текущего положения курсора
rc Восстановление последней позиции курсора
sgr0 Обычный экран
rev Обратное видео

21.1.2. Числовой вывод

Наиболее распространенный числовой вывод:

Название Значение
cols Количество столбцов
it Настройка табуляции
lines Количество строк на экране

21.1.3. Поток вывода булевых данных

Команда tput включает незначительное количество булевых операторов.

Название Значение
chts Курсор трудно заметить
hs Имеет строку статуса

21.2. Работа с командой tput

Рассмотрим наиболее распространенные разновидности команды tput, а также методы ее использования в сценариях.

21.2.1. Присвоение имен командам tput

Можно использовать поток вывода всех имен команды tput, присваивая их переменным с более осмысленными наименованиями. При этом применяется следующий формат:

имя переменной='tput name'

21.2.2. Применение булевого потока вывода

Чтобы применить булев поток вывода для команды tput, воспользуйтесь конструкцией if:

STATUS_LINE=`tput hs` if $STATUS_LINE; then

echo "your terminal has a status line"

else

echo "your terminal has NO status line"

fi

21.2.3. Использование команды tput в сценариях

В приведенном сценарии командам tput bel и cl присваиваются более значимые имена.

$ pg tput1

#!/bin/sh

BELL=`tput bel`

CLEAR=`tput cl`

echo $BELL

echo $CLEAR

В следующем сценарии изменяются несколько видеоатрибутов и происходит отображение и сокрытие курсора: