20.2.2. Принцип работы команды getopts
20.2.3. Указание значений опций с помощью команды getopts
20.2.4. Доступ к значениям
20.2.5. Использование команды getopts для преобразования файлов
20.3. Заключение
ГЛАВА 21
21.1. Применение команды tput
21.1.1. Строчный поток вывода данных
21.1.2. Числовой вывод
21.1.3. Поток вывода булевых данных
21.2. Работа с командой tput
21.2.1. Присвоение имен командам tput
21.2.2. Применение булевого потока вывода
21.2.3. Использование команды tput в сценариях
21.2.4. Генерирование escape–последовательностей
21.2.5. Изменение положения курсора
21.2.6. Центрирование отображаемого текста
21.2.7. Определение атрибутов терминала
21.2.8. Применение функциональных клавиш при работе со сценариями
21.2.9. Применение различных цветов
21.2.10. Генерирование цветов
21.2.11. Улучшение внешнего вида меню
21.3. Заключение
ГЛАВА 22
22.1. Добавление записей
22.2. Удаление записей
22.3. Обновление записей
22.4. Просмотр записей
22.5. Заключение
ГЛАВА 23
23.1. Наиболее распространенные ошибки
23.1.1. Ошибки, связанные с циклом
23.1.2. Как обычно пропускают кавычки
23.1.3. Проверка на наличие ошибки
23.1.4. Регистр символов
23.1.5. Циклы for
23.1.6. Команда echo
23.2. Команда set
23.3. Заключение
ГЛАВА 24
24.1. Полный список команд, встроенных в интерпретатор shell
24.1.1. Команда pwd
24.1.2. Команда set
24.1.3. Команда times
24.1.4. Команда type
24.1.5. Команда ulimit
24.1.6. Команда wait
24.2. Заключение
Часть 5
ГЛАВА 25
25.1 Быстрый метод формирования файла
25.2. Скоростной способ вывода документа на печать
25.3. Автоматизация меню
25.4. Автоматизация передачи файлов по протоколу ftp
25.5. Организация доступа к базам данных
ГЛАВА 26
26.1. Создание регистрационных файлов
26.1.1. Применение команды date для создания журнальных файлов
26.1.2. Создание уникальных временных файлов
26.2. Сигналы
26.2.1. Уничтожение процесса
26.2.2. Обнаружение сигнала
26.3. Команда trap
26.3.1. Перехват сигналов и выполнение действий
26.3.2. Захват сигнала и выполнение действий
26.3.3. Блокировка терминала
26.3.4. Игнорирование сигналов
26.4. Команда eval
26.4.1. Выполнение команд, находящихся в строке
26.4.2. Присвоение значения имени переменной
26.5. Команда logger
26.5.1. Использование команды logger
26.5.2. Использование команды logger в сценариях
26.6. Заключение
ГЛАВА 27
27.1. Сценарий pingall
27.2. Сценарий backup_gen
27.3. Сценарий del.lines
27.4. Сценарий access.deny
27.5. Сценарий logroll
27.6. Сценарий nfsdown
27.7. Заключение
ГЛАВА 28
28.1. Определение наличия каталогов уровня выполнения
28.2. Уточнение текущего уровня выполнения
28.3. Ускорение работы с помощью файла inittab
28.4. Переходим к уровням выполнения
28.4.1. Различные уровни выполнения
28.4.2. Формат сценария уровня выполнения
28.4.3. Инсталляция сценария уровня выполнения
28.5. Использование файла inittab для запуска приложений
28.6. Другие методы, применяемые для запуска и останова служб
28.7. Заключение
ГЛАВА 29
29.1. Определение Web–страницы
29.2. Протокол cgi
29.3. Подключение к Web–серверу
29.4. Сценарии cgi и HTM
29.4.1. Базовый сценарий cgi
29.4.2. Отображение вывода команды интерпретатора shell
29.4.3. Использование SSI
29.4.4. Счетчик количества посещений
29.4.5. Вывод на печать текущих настроек Web–среды с помощью ссылки
29.4.6. Другие общие переменные среды
29.5. Введение в методы get и post
29.5.1. Метод get
29.5.2. Метод post
29.5.3. Заполнение списка
29.5.4. Автоматическое обновление Web–страницы
29.6. Заключение
ПРИЛОЖЕНИЕ А Коды ASCII
ПРИЛОЖЕНИЕ Б
basename
cat
compress
cp
diff
dircmp
dirname
du
file
fuser
head
mkdir
more
nl
printf
pwd
rm
rmdir
script
shutdown
sleep
strings
touch
tty
uname
uncompress
wait
wc
whereis
who
notes
1
2
3
Введение
Настоящая книга посвящена shell–программированию, или, точнее, программированию в интерпретаторе Bourne shell.
Программирование на языке интерпретатора shell приобретает все большую популярность по мере утверждения Linux в качестве удобной в работе и отказоустойчивой операционной системы. Трудно оценить, какое количество пользователей работают с Linux. Эта операционная система распространяется бесплатно, хотя многие компании разрабатывают ее коммерческие варианты. Кроме того, несмотря на сделанные несколько лет назад неутешительные прогнозы специалистов относительно будущего UNIX, данная ОС также не теряет популярности, и число ее приверженцев продолжает расти.
Если вы хотите изучить shell–программирование, эта книга — для вас. Если же у вас имеется определенный опыт работы с интерпретатором shell, она послужит для вас хорошим справочным руководством. Кроме того, настоящее издание можно рассматривать как сборник советов по администрированию системы и кратких подсказок на все случаи жизни.
При написании книги во внимание принимались шесть основных положений:
• читатель должен быстро освоить инструментальные средства интерпретатора shell, а также изучить основы программирования на языке shell;
• книга должна служить не только руководством, но и справочником;
• для повышения производительности системы читателю следует научиться писать shell–сценарии;
• необходимо, чтобы shell–сценарии имели четкую и понятную структуру}
• главы, по возможности, должны быть самодостаточными и независимыми друг от друга, что упрощает их изучение;
• читатель должен уметь решать ряд административных задач, в частности создавать CGI–сценарии.
Обычно книги данной тематики имеют одну характерную особенность: некоторые примеры сценариев усложнены только ради того, чтобы занимать на несколько строчек меньше. Предлагаемая вашему вниманию книга свободна от подобных ограничений: все программные коды в ней просты, но эффективны.
Если вы приступили к изучению shell–программирования, очевидно, у вас есть на то веские причины. Основные причины изучения shell–программирования заключаются в следующем:
• язык программирования интерпретатора shell вполне самодостаточен, он содержит все необходимые управляющие конструкции и удобен в применении;
• открывается возможность быстрого создания сценариев;
• сценарии позволяют автоматизировать рутинные операции, выполняемые обычно вручную.
Интерпретатор bourne shell
Bourne shell является стандартным интерпретатором команд, который входит в состав всех систем UNIX и совместим с интерпретатором bash в Linux. В книге, посвященной shell–программированию и не привязанной к конкретной операционной системе, в качестве общего знаменателя должен рассматриваться именно Bourne shell. Учтите, что существуют и другие интерпретаторы, такие как bash, Korn shell и С shell. Если в вашей системе установлен интерпретатор bash, сценарии из этой книги будут выполняться в нем, поскольку bash совместим с Bourne shell. Синтаксис интерпретатора Korn shell близок к синтаксису рассматриваемого здесь языка.