- •Понятие операционной системы. Типы операционных систем. Обобщенная структура операционной системы. Общая характеристика ос семейства unix.
- •Файловые системы современных ос. Интерфейс пользователя для работы с файловой системой.
- •Защита данных в операционных системах. Управление правами доступа к файлам.
- •Способы группирования команд в операционных системах. Командные файлы. Программные каналы, конвейеры команд.
- •5. Обзор возможностей командных процессоров (оболочек) операционных систем.
- •6. Принципы организации многозадачного режима в операционных системах.
- •1.1) Пакетный режим:
- •1.2) Режим разделения времени:
- •2.2) Режим виртуальных машин:
- •7. Коммуникационные средства операционных систем семейства unix
- •8. Генерация, конфигурирование, настройка операционных систем на потребности
- •9. Средства и способы обеспечения многопользовательского режима в операционных системах.
- •10. Понятие процесса. Управление процессами в операционной системе unix.
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 – командный интерпритатор, т.к. он считывает команды, интерпритирует и исполняет.