Метод 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
В следующем сценарии изменяются несколько видеоатрибутов и происходит отображение и сокрытие курсора: