Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SPO_shpory.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.65 Mб
Скачать

12 Командный интерпритатор Shell. Синтаксис языка Bourn Shell. Общий синтаксис скрипта.

Все современные системы UNIX поставляются по крайней мере с тремя командными интерпретаторами: Bourne shell (/bin/sh), С shell (/bin/csh) й Korn shell (/bin/ksh). Существует еще несколько интерпретаторов, напри­мер Bourne-Again shell (bash), со сходными функциями.Командный интерпретатор занимает важное место в операционной систе­ме UNIX, прежде всего, благодаря следующим обстоятельствам(рис на стр.58 Робачевский):

1Первая программа, с которой по существу начинается работа пользо­вателя, — shell. В UNIX реализуется следующий сценарий работы в системе :

-При включении терминала активизируется процесс getty(), который является сервером терминального доступа и запускает программу login(), которая, в свою очередь, запрашивает у пользователя имя и пароль.

-Если пользователь зарегистрирован в системе и ввел правиль­ный пароль, login() запускает программу, указанную в послед­нем поле записи пользователя в файле /etc/passwd. В принципе это может быть любая программа, но в нашем случае — это ко­мандный интерпретатор shell.

- Shell выполняет соответствующий командный файл инициали­зации, и выдает на терминал пользователя приглашение. С этого момента пользователь может вводить команды.

-Shell считывает ввод пользователя, производит синтаксический анализ введенной строки, подстановку шаблонов и выполняет действие, предписанное пользователем (это может быть запуск программы, выполнение внутренней функции интерпретатора) или сообщает об ошибке, если программа или функция не най­дены.

-По окончании работы пользователь завершает работу с интер­претатором, вводя команду exit, и выходит из системы.

2. Командный интерпретатор является удобным средством программиро­вания. Синтаксис языка различных командных интерпретаторов не­сколько отличается, в качестве базового мы рассмотрим командный интерпретатор Bourne. С помощью shell можно создавать сложные программы, конструируя их, как из кирпичиков, из существующих утилит UNIX. Программы на языке shell часто называют скриптами или сценариями (script). Интерпретатор считывает строки из файла-скрипта и выполняет их, как если бы они были введены пользовате­лем в командной строке.

з. При входе пользователя в систему запускается его инициализационный скрипт, выполняющий несколько функций: установку пути поиска программ, инициализацию терминала, опреде­ление расположения почтового ящика. Помимо этого может быть вы­полнен целый ряд полезных действий, — например, установка при­глашения. Инициали­зационный скрипт находится в домашнем каталоге пользователя.

Любой из стандартных командных интерпретаторов имеет развитый язык программирования, позволяющий создавать командные файлы, или скрипты, для выполнения достаточно сложных задач. Следует, однако, иметь в виду, что shell является интерпретатором, он последовательно счи­тывает команды из скрипта и выполняет их, как если бы они последова­тельно вводились пользователем с терминала. При таком характере работы трудно ожидать большой производительности от скриптов, однако их эф­фективность определяется простотой и наглядностью. Если же производи­тельность программы играет главную роль, то самым эффективным сред­ством по-прежнему остается язык программирования С.

Общий синтаксис скрипта. Скрипт представляет собой обычный текстовый файл, в котором записаны инструкции, понятные командному интерпре­татору. Это могут быть команды, выражения shell или функции. Команд­ный интерпретатор считывает эти инструкции из файла и последовательно выполняет их.Безусловно, как и в случае любого другого языка программирования, при­менение комментариев существенно облегчает последующее использова­ние и модификацию написанной программы. В Bourne shell комментарии начинаются с символа '#':

# Этот скрипт выполняет поиск "мусора" (забытых временных

# файлов, файлов core и т.п.)

Комментарии могут занимать не всю строку, а следовать после команды:

find /home -name core -print # Выполним поиск файлов core

Поскольку в системе могут существовать скрипты для различных интерпретаторов, имя интерпретирующей команды обычно помещается в первой строке следующим образом: #!/bin/sh

В данном случае последующий текст скрипта будет интерпритироваться Bourne Shell. При запуске скрипта из командной строки(дляэтого он должен обладать правом на выполнение - x), будет запущен новый командный интерпретатор, ввод команд для которого будет выполнятьсы из файла скрипта.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]