Литмир - Электронная Библиотека

tr_case -1 -v myfilel myfile2…

либо

tr_case -v -1 myfilel myfile2…

Сразу же бросается в глаза заметное сокращение объема программного кода при использовании команды getopts. Код, применяемый для обработки файлов, аналогичен коду с командой shift.

Пример сценария:

$ pg tr_case2

#!/bin/sh

#tr_case2

# преобразование регистра, используется команда getopts

ЕХТ=""

TRCASE=""

FLAG=""

OPT="no"

VERBOSE="off"

while getopts :luv OPTION

do

case $OPTION in

l)

TRCASE="lower"

EXT=".LC"

OPT=yes

;;

u)

TRCASE="upper"

EXT=".UC"

OPT=yes

;;

v)

VERBOSE=on

;;

\?) echo "usage: `basename $0`: -[l|u] —v file[s]"

exit 1

;;

esac

done

#следующий аргумент, пожалуйста

shift `expr $OPTIND -1`

#есть аргументы ???

if [ "$#"="0" ] || [ "$OPT"="no" ] then

echo "usage: `basename $0`: -[l|u] — v file[s]" >&2

exit 1

fi

for LOOP in "$@" do

if [ ! — f $LOOP ] then

echo "`basename $0`: Error cannot find file $LOOP" >&2

exit 1

fi

echo $TRCASE $LOOP

case $TRCASE in

lower)

if [ "VERBOSE"="on" ]; then

echo "doing…lower on $LOOP..newflie called $LOOP$EXT"

fi

cat $LOOP | tr "[a‑z]" "[A‑Z]" >$LOOP$EXT

;;

upper) if [ "VERBOSE"="on" ]; then

echo "doing upper on $LOOP..newflie called $LOOP$EXT"

fi

cat $LOOP | tr "[A‑Z]" "[a‑z]" >$LOOP$EXT

;;

esac

done

При указании опций командной строки в сценариях было бы неплохо придерживаться соглашений о наименовании, принятых в UNIX либо Linux. В следующей таблице описываются некоторые общие опции и их значения.

Опция

Значение

-a

добавление

-c

счетчик, копирование

-d

каталог, устройство

-e

выполнение

-f

имя файла, форсировать

-h

справка

-i

игнорировать регистр

-1

журнальный файл

-o

полный вывод

-q

полностью

-p

путь

-v

многословный

20.3. Заключение

Способность корректно обрабатывать опции командной строки придает сценариям профессиональный вид. Для пользователя эти опции выглядят точно так же, как любые другие системные команды. В этой главе были рассмотрены два метода, предназначенные для обработки опций командной строки, — shift и getopts. Размер программного кода, необходимого для внедрения метода getopts, является намного меньшим, чем в случае использования метода shift.

Метод 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

78
{"b":"273485","o":1}