Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы OC UNIX_часть3.doc
Скачиваний:
21
Добавлен:
18.04.2015
Размер:
543.23 Кб
Скачать

2.7. Контрольные вопросы

  1. Назовите типы командных процессоров.

  2. Какие задачи выполняет командный процессор?

  3. Перечислите виды команд, встроенных в shell.

  4. Назовите примеры общих команд, встроенных в оболочку.

  5. Назовите примеры команд адаптации.

  6. Перечислите предопределенные переменные shell'a.

  7. Какая команда устанавливает позиционные переменные?

  8. Что такое псевдоним?

  9. Какая команда создает псевдоним?

  10. Какой командой можно удалить псевдоним?

Глава 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. Ее можно заменить на другую или иметь несколько.