Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС.docx
Скачиваний:
2
Добавлен:
22.09.2019
Размер:
471.16 Кб
Скачать

5. Обзор возможностей командных процессоров (оболочек) операционных систем.

Shell, с одной стороны, представляет собой интерпретатор команд, с другой стороны, это язык программирования, позволяющий выполнять многие действия, похож на C.

/usr/bin/sh Posix Shell(классическая оболочка, созданная Борном в 70х, вошла в POSIX)

/usr/bin/bash Bash (переработанный вариант sh, используется в Linux по умолчанию)

/usr/bin/csh C Shell (стандартная оболочка для BSD, внутренний язык напоминает C)

/usr/bin/ksh Korn Shell (аналог csh от программистов компании AT&T)

О сновные функции оболочек в UNIX:

  • Исполнение команд. Находит команду и выполняет для нее соответствующую программу,

  • Установка среды.

  • Задание переменных и замена переменных

  • Подстановка команд (установка псевдонимов команд - с помощью alias/unalias).

  • Генерация имён файлов. Формирует имена файлов, используя символы генерации

  • Выполняет перенаправление ввода-вывода

  • Выполняет подстановку результатов выполнения команд

  • Реализует конвейеры

  • Поддерживает интерпретируемый программный интерфейс (ветвления, циклы…).

  • Буферирование команд (сохраняет команды, которые вводит пользователь, в некотором файле предыстории).

Команды в Shell: 1)Внутренние команды shell. Примеры: set, while, is , for

2)Команды, которые интерпретируются shell. Примеры: ls, more, pwd. Команды UNIX находятся с помощью переменной среды PATH.

Команды UNIX могут иметь те же имена, что и встроенные команды shell'а: в этом случае для доступа к командам UNIX пользователь должен явно указывать полное маршрутное имя команды. Для поиска нужной команды в системе предусмотрена:

whereis <имя команды> выдаёт на экран полное имя каталога, содержащего указанную команду.

Установка псевдонимов команд: alias <имя>=<строка> #alias dir=ls

Среда пользователя описывает сеанс работы пользователя с системой для программ, которые запускает пользователь на выполнение. Среда пользователя содержит:

  • маршрутное имя начального каталога пользователя

  • под каким именем вошел пользователь

  • где shell будет искать команды и т.д.

Среда пользователя может быть отображена на экран командой env.

Стартовые файлы shell:

При входе в систему для формирования среды и выполнения других необходимых действий выполняются специальные процедуры - стартовые процедуры shell.

.profile Этот файл позволяет пользователю определить или настроить переменные среды, характеристики терминала, а так же выполнить любое приложение при входе в системы. Если .profile содержит команду exec <приложение>, то пользователь не получит приглашение со стороны shell'а, а по завершении приложения выйдет из системы. Общесистемный стартовый файл (выполняется для всех пользователей, работающих с Borne, Korn или Posix-shell'ом): /etc/profile

Хранимые переменные в shell: В UNIX различают несколько видов переменных:

  • локальные переменные

  • программных код shell

  • переменные среды

В Shell встроены две области переменных:

  • область локальных переменных;

  • среда.

Установка переменных shell: Для установки переменной необходимо указать имя переменной и значение (<имя>=<значение>). Особенности задания переменных:

  • при написании не допускается пробелов

  • имена переменных начинаются с букв латинского алфавита и могут содержать буквы, цифры и символы подчёркивания, ограничения на длину имён нет.

Для передачи переменных из локальной области в среду - выполнить команду export.

Подстановки.

Имя shell-переменной - это начинающаяся с буквы последовательность букв, цифр и подчеркиваний. Значение shell-переменной - строка символов. Для присваивания значений переменным может использоваться оператор присваивания "=".

DAT=`date` приводит к тому, что сначала выполняется команда "date" (обратные кавычки говорят о том, что сначала должна быть выполнена заключенная в них команда), а результат ее выполнения, вместо выдачи на стандартный выход, приписывается в качестве значения переменной, в данном случае "DAT".

При обращении к shell-переменной необходимо перед именем ставить символ "$" Для того, чтобы имя переменной не сливалось со строкой, следующей за именем переменной, используются фигурные скобки: cat ${a}prim

После разбиения на слова, если только не установлена опция -f, командный интерпретатор bash просматривает каждое слово в поисках символов *, ?, ( и [. Если найден любой из этих символов, слово считается шаблоном и заменяется упорядоченным по алфавиту списком имен файлов, соответствующих шаблону.

  • * любая строка, в т.ч, пустой (кроме тех, у которых в начале имени стоит точка).

  • ? Соответствует любому одиночному символу.

  • [...] Соответствует любому из символов в квадратных скобках. Пара символов, разделенная дефисом, задает диапазон; любой символ, лексически находящийся между этими двумя символами, включительно, будет соответствовать этой конструкции. Если сразу после [ идет символ ! или ^, то конструкции соответствует любой символ, не указанный в квадратных скобках. Для сопоставления с дефисом (-) его необходимо указать в квадратных скобках первым или последним. Для задания закрывающей квадратной скобки (]), ее необходимо указать как первый символ набора.

Всё это называется командные процессоры (интерпритаторы). Правильное называние shell – командный интерпритатор, т.к. он считывает команды, интерпритирует и исполняет.