Если внимательно изучить сценарии системной инсталляции, то можно обнаружить, что более чем на 95 процентов они являются сценариями Bourne shell. Это объясняется тем, что создатели сценариев знали: они будут выполняться в любой системе UNIX и Linux.
Если необходимо, чтобы создаваемый сценарий выполнялся под управлением любой системы, он должен обладать свойством переносимости. Переносимость сценариев определяется двумя основными факторами: • синтаксисом языка применяемого интерпретатора shell; • используемыми командами интерпретатора.
Проблемы, связанные с первым фактором, решаются автоматически, если сценарии создаются для интерпретатора Bourne shell.
Что касается второго фактора, то для большинства shell–сценариев характерна следующая особенность: по крайней мере, 20 процентов (а то и больше) их рабочего времени затрачивается на выполнение таких shell–команд, как cp, mv, mkdir и др. Здесь и заключена проблема переносимости. Дело в том, что поставщики разных операционных систем оснащают эти команды различными наборами опций. В нашей книге используются сценарии общего характера и применяются только те опции и команды, которые присутствуют как в System V, так и в BSD. Если же имеются какие-либо различия, то приводятся альтернативные команды, но это случается сравнительно редко.
Книга представляет собой как руководство, так и справочник, поэтому ее главы можно читать в произвольном порядке. Если, например, вы хотите научиться включать в свои HTML–страницы CGI–сценарии, можете начать изучение материала даже с последней главы.
Книга состоит из пяти частей, посвященных различным аспектам программирования на языке интерпретатора shell.
В первой части книги рассматриваются общие вопросы, связанные с работой в интерпретаторе shell.
В главе 1 рассказывается о правах доступа к файлам и каталогам, а также о том, как создавать символические ссылки.
Чтобы на поиск созданного вами файла не уходило много времени, прочитайте
главу 2, посвященную команде find .
Вполне вероятно, что вы захотите выполнять сценарии в ночное или вечернее время. В этом случае вам следует изучить главу 3, в которой изложены сведения о планировании выполнения сценариев.
Первая часть содержит также информацию о том, как работают механизмы ввода–вывода в интерпретаторе shell, как принимать данные с терминала и отображать на нем содержимое файлов, как перенаправлять потоки ввода–вывода и многое другое.
Во второй части дается подробный обзор важнейших инструментов фильтрации текста. Фильтрация может выполняться в разное время: до того как данные поступят на вход сценария, в процессе выполнения сценария и при выводе текста на экран.
В отдельных главах описаны: grep — утилита поиска текстовых файлов (глава 8), awk — текстовый редактор, имеющий собственный язык сценариев (глава 9), sed — потоковый редактор, позволяющий выполнять быстрое редактирование (глава 10), и tr — утилита трансляции символов (глава 12). В главе 11 обсуждаются вопросы сортировки и объединения файлов, а также принципы работы с отдельными фрагментами текста.
Третья часть посвящена вопросам регистрации в системе и настройки пользовательской среды. Каждый пользователь UNIX и Linux должен хорошо представлять, какие файлы выполняются в процессе регистрации,
В главе 14 подробно описаны механизмы управления локальными переменными интерпретатора shell и глобальными переменными среды,
В главе 15 даны рекомендации относительно того, как правильно употреблять различного рода кавычки и другие специальные символы интерпретатора shell, что позволит вам эффективно работать с системными переменными.
В четвертой части мы приступим к написанию сценариев интерпретатора shell. Здесь приведены указания по созданию исполняемых файлов и по их выполнению в среде интерпретатора shell, а также продемонстрированы принципы применения в сценариях условных, циклических и других управляющих конструкций.
Глава 19 содержит описания функций. Кроме того, в ней представлены способы их многократного вызова из различных сценариев.
Важным моментом является передача аргументов сценарию интерпретатора shell. В главе 20 показано, как обрабатывать аргументы, переданные сценарию.
В главе 21 вы узнаете, как форматировать текст при выводе на экран. Отдельная глава, 22, посвящена вопросам обновления файлов. В главе 23 сосредоточены основные сведения об отладке сценариев.
Завершает данную часть обзор встроенных shell–команд, которые до этого не рассматривались.
В пятой части состоится знакомство с современными методами создания сценариев.