- •И.Н.Акуленок
- •Утверждено советом университета
- •Введение
- •Глава 1. Текстовые редакторы
- •1.1. Редактор ed
- •1.1.1. Команды, не использующие адресации строк
- •1.1.2. Команды, использующие один адрес
- •1.1.3. Команды, использующие два адреса
- •1.1.4. Нумерация строк
- •1.1.5. Примеры использования команд
- •1.2. Редактор VI и ex
- •1.2.1. Редактирование нескольких файлов
- •1.2.2. Вставка текста из одного файла в другой
- •1.3. Потоковый редактор sed
- •1.4. Контрольные вопросы
- •Глава 2. Командные процессоры ос unix
- •2.1. Типы командных процессоров
- •2.2. Идентификация и смена оболочки
- •2.3. Запуск shell и стартовых shell–файлов
- •2.4. Установка переменных среды
- •2.5. Псевдонимы команд
- •2.6. Выполнение .Profile после его изменения
- •2.7. Контрольные вопросы
- •Глава 3. Интерпретатор shell
- •3.1. Shell–переменные
- •3.1.1. Задание значений переменных и их отмена
- •3.1.2. Экспорт переменных
- •3.2. Специальные символы
- •3.2.1. Использование двойных кавычек и апострофа
- •3.2.2. Обратные апострофы
- •3.2.3. Обратная наклонная черта
- •3.3. Позиционные переменные
- •3.4. Код завершения процесса
- •3.5. Конвейеры и списки
- •3.6. Композиции команд
- •3.5.1. Порожденный shell – оператор круглые скобки ( )
- •3.5.2. Оператор списка – фигурные скобки {}
- •3.6. Контрольные вопросы
- •Глава 4. Программные структуры
- •4.1. Команда test
- •4.1.1. Условия проверки файлов
- •4.1.2. Условия проверки строк
- •4.1.3. Условия сравнения целых чисел
- •4.1.4. Сложные условия
- •4.2. Команда expr
- •4.3. Команда read
- •4.4.Условный оператор if
- •4.5. Оператор цикла for
- •4.6. Операторы цикла while и until
- •4.7. Оператор вызова case
- •4.8. Функции в shell
- •4.9. Контрольные вопросы
- •5. Создание сценария командного процессора
- •5.1. Пример простейшего сценария
- •5.2. Основные этапы разработки сценария
- •5.3. Отладка командных процедур
- •5.4. Выполнение shell–программ
- •5.5. Создание новых команд
- •5.6. Контрольные вопросы
- •Список литературы
- •Оглавление
- •Акуленок Ирина Николаевна
2.7. Контрольные вопросы
Назовите типы командных процессоров.
Какие задачи выполняет командный процессор?
Перечислите виды команд, встроенных в shell.
Назовите примеры общих команд, встроенных в оболочку.
Назовите примеры команд адаптации.
Перечислите предопределенные переменные shell'a.
Какая команда устанавливает позиционные переменные?
Что такое псевдоним?
Какая команда создает псевдоним?
Какой командой можно удалить псевдоним?
Глава 3. Интерпретатор shell
Программа shпредставляет собой наиболее важную утилиту ОС UNIX.Shell– это не только интерпретатор команд системы UNIX, но еще и полноценный язык программирования, причем, как многие интерпретаторы, довольно высокого уровня. Если задача – разовая (нет требований по быстродействию, совместимости и переносимости) и достаточно абстрактная (нет привязки к конкретной сложной структуре данных), ее скорее всего можно решить, написав командный сценарий – программу наshell. По совокупности свойствshellможно считать самым мощным средством системы UNIX.
Операционные системы различаются по степени развитости входящих в их состав интерпретаторов команд. В одних системах интерпретатор прост, но совокупность программ не образует язык программирования, а в других имеются отличные языки программирования на уровне системных команд, но выполнение отдельной команды осложнено. Shellже объединяет в себе лучшие качества интерпретаторов различных операционных систем.
В командных процессорах используются всего два типа языков. Это sh–подобный язык и csh–подобный язык. Первый тип поддерживается в sh, ksh, bash. Второй – в csh и tcsh. Язык sh более удобен и стандартен, на нем написаны практически все сценарии во всех системах UNIX, включая стартовые скрипты системы. Язык csh по синтаксису ближе к языку программирования С, но используется для скриптов реже. Однако в некоторых случаях программное обеспечение включает в себя скрипты на языке csh.
Первой строкой любого сценария должна быть строка, содержащая управляющий комментарий специального вида:
#!полное_имя_командного процессора
Например,
#!/bin/sh
Этот комментарий требует выполнить скрипт с помощью указанного командного процессора. По умолчанию скрипт выполняется в среде /bin/sh, даже если он запущен в среде другого командного процессора. Если вы работаете в tcsh и хотите, чтобы ваши скрипты запускались в tcsh, следует обязательно указать полный путь к tcsh в управляющем комментарии.
Интерактивный режим взаимодействия с shellмы уже рассмотрели во второй части курса. В интерактивном режиме пользователи ограничиваются вводом простых команд, таких, как «ls», генерацией имен типа «ls *.doc», переадресацией ввода–вывода, например, «ls>file». Эти средства полезны и эффективны, но представляют лишь часть всех средствshell’а.
Важно отметить, что интерактивное управление задачей и создание программы для ее автоматического выполнения суть не одно и то же. При интерактивном управлении вы можете полагаться на свой интеллект в тех или иных ситуациях, возникающих при решении задачи, тогда как никакая программа интеллектом не обладает. Ее реакции должны быть заранее определены и запрограммированы. Любому, кто писал большую программу, известно, насколько сложно при этом предусмотреть все возможные ситуации.
Интерактивная процедура представляет собой простую последовательность команд, а программа, реализующая то же самое действие, – сложную логическую структуру. Опыт показывает, что наличие развитых управляющих структур для повторения последовательностей операторов и проверки определенных условий облегчает создание хороших программ. Известно также, что во многих случаях целесообразно применять системные переменные, значение которых изменяется в процессе выполнения программы.
Интерпретатор shellсистемы UNIX располагает как управляющими структурами, так и системными переменными.Shellобычная программа, т.е. она не входит в ядро операционной системы UNIX. Ее можно заменить на другую или иметь несколько.