Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
123
Добавлен:
20.06.2014
Размер:
6.61 Mб
Скачать

14. Пользовательская среда unix.

Сеанс работы в ОС Unix связан с понятием терминала (устройство, подключаемое к линии связи, имеющ. клав-у для ввода текстовой инф-ции и дисплей для отображения. Функциональность терминала сводится к передаче линии связи текста и отображения инф-ции, получен. по линии связи.

Linux и FreeBSD эмулируют терминалы на системн. клав-е и видеокарте. Эмулир-ся неск. терминалов независимо др. от др.

Терминальное окно – это базовая пользовательская среда непосредственных задач пользователя или администратора.

Командн. интерпритатор с ним начинаем работать. Эта оболочка берет команды пользователя вводим. командн. строке и преобразует их в процессы. Процессы получают доступ к файлам и уст-вам. К обязанностям оболочки: контроль кода и позволяет получать пользователю найти и выполнить программы, заставляет систему работать.

  1. Командный интерпретатор shell.

Современная система поставляется с тремя командными интерпретаторами:

Bourne Shell (/bin/sh)

C Shell (/bin/csh)

Korn Shell (/bin/ksh)

Интерпретатор – первая программа, с которой начинается работа пользователя. В Unix с ее помощью организуется следующий сценарий работы:

При включении терминал активирует процесс getty. Он является сервером терминального доступа, и он запускает программу login, которая запрашивает у пользователя имя и пароль. Если пользователь зарегистрирован и ввел верно логин и пароль, то система запускает командный интерпретатор. Он выполняет соответствующий командный файл инициализации и выдает на терминал приглашение к работе. С этого момента можно вводить команды. Интерпретатор считывает ввод пользователя, производит синтаксический анализ, подстановку шаблона, выполняет действие или сообщает об ошибке. Считывание и выполнение команд интерпретатор производит в цикле. Сам интерпретатор – обычная пользовательская программа, не является частью ОС. Дальше по окончанию работы, пользователь завершает работу вводом команды exit или logout.

Командный интерпретатор является удобным средством программирования. По синтаксису языки различают 2 группы:

- с С-подобным синтаксисом (С Shell)

- интерпретаторы Bourne-типа.

Программа на языке интерпретатора называется командным файлом или скриптом или сценарием. Интерпретатор считывает строки из сценария и выполняет их как будто они введены в командной строке терминала. Интерпретатор работает пошагово или построчно.

При входе пользователя в систему запускается инициализационный скрипт, выполняющий следующие функции:

- установка пути поиска программ

- инициализация терминала

- определение расположения почтового ящика

Кроме этого можно выполнить ряд полезных действий. Файл инициализации profile.

Синтаксис языка Bourne Shell. Слова в команде разделяются пробелами, количество пробелов не играет роли. Инструкция интерпретатора состоит из необязательных назначения переменных, собственно команды и необязательного перенаправления потока ввода/вывода. Например:

> PATH=/home/andy/bin:/bin/ ls –l >/tmp/ls_res #список файлов

Этой командой потребовали выполнение команды ls с ключом –l. Смысл команды: вывод имен файлов текущего каталога с атрибутами. Ограничили область поиска этой команды каталогами /home/andy/bin и /bin/, задав на время выполнения команды значение переменной окружения PATH. Если в каталоге /home/andy/bin есть программа ls, то она запускается на выполнение, если нет, то запускается /bin/ls. Результат выполнения команды будет помещен в файл ls_res.

Командами могут быть встроенные функции, функции командного интерпретатора, определенные пользователем и внешние программы и утилиты. Это исполняемые bin файлы и скрипты. Команды могут выполняться синхронно, то приглашение к вводу следующей инструкции появляется после выполнения последней команды; или в фоновом режиме асинхронно.

При асинхронном интерпретатор не дожидается завершения выполнения команды для выдачи приглашения. Знак & в конце команды указывает на фоновое или асинхронное выполнение.

> find /home –name core –print > /tmp/cores &

Требуется поиск в каталоге home файлов по имени core, а все потоки вывода перенаправлены в файл /tmp/cores.