- •Unix-подобные операционные системы
- •Часть 1. Введение в операционные системы unix 10
- •Часть 2. Использование unix 44
- •Unix-подобныеОс
- •Термин «unix-подобный» и торговая марка unix
- •Категории
- •История развития ос unix
- •Часть 1. Введение в операционные системы unix
- •Основные концепции операционных систем Обзор компьютерных систем
- •Назначение операционной системы
- •Операционная система как виртуальная машина
- •Операционная система как менеджер ресурсов
- •Архитектура операционной системы
- •Монолитная операционная система
- •Микроядерная операционная система
- •Классификация операционных систем по назначению
- •Архитектура unix. Файлы и устройства Особенности архитектуры unix
- •Два объекта unix: файлы и процессы
- •Беглый взгляд на архитектуру unix
- •Ядро unix
- •Файловая система unix
- •Особенности файловой системы
- •Виртуальная файловая система
- •Дерево каталогов
- •Устройства и драйверы
- •Архитектура unix. Процессы
- •Управление памятью
- •Управление процессами
- •Контекст процесса
- •Планирование процессов
- •Создание новых процессов
- •Процессы и потоки
- •Межпроцессное взаимодействие
- •Разделяемая память
- •Переменные окружения
- •Сигналы
- •Часть 2. Использование unix Терминал и командная строка
- •Терминал
- •Управляющие символы
- •Одновременный доступ к системе
- •Командная строка
- •Командная оболочка
- •Приглашение
- •Команды
- •Параметры
- •Шаблоны
- •Перенаправление ввода и вывода
- •Программное окружение
- •Стандартные переменные окружения
- •Служебные символы
- •Процесс выполнения команды
- •Возвращаемое значение
- •Эффективное использование командной строки
- •Редактирование командной строки
- •История команд
- •Автодополнение
- •Средства объединения команд
- •Справочная подсистема
- •Страницы руководства
- •Поиск по руководствам
- •Программа info
- •Документация, поставляемая с программой
- •Интегрированные системы документации
- •Введение в безопасность unix
- •Основы информационной безопасности
- •Политика безопасности
- •Управление доступом
- •Аутентификация и авторизация
- •Концепции безопасности unix
- •Пользователи и группы
- •Права доступа
- •Разделяемые каталоги
- •Подмена идентификатора процесса
- •Ограничения базовой модели доступа и её расширения
- •Суперпользователь
- •Аутентификация пользователей
- •Управление пользователями и правами доступа База данных пользователей системы
- •Изменение базы данных пользователей
- •Изменение прав доступа
- •Ограничения сеанса пользователя
- •Литература
Параметры
Однако команды UNIX могут быть устроены и более сложным образом, когда необходимо не только выполнить внешнюю программу, но и передать ей какую-то дополнительную информацию, чтобы так или иначе модифицировать ее работу. Модификаторы поведения в этом случае вводятся в командной строке после имени команды — это параметры команды. Параметров может быть произвольное количество (оно зависит только от смысла передаваемой внешней программе информации), друг от друга параметры отделяются пробелами. Параметры будут переданы программе в том порядке, в котором они указаны в командной строке.
Рисунок 2.7. Пример выполнения команды c параметром
user@desktop ~ $ cal 1 2006
Января 2006
Вс Пн Вт Ср Чт Пт Сб
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Командная оболочка передает внешней программе ее параметры не в виде единой строки, как их ввел пользователь, а в виде упорядоченного списка (первый параметр, второй параметр...). Для этого командную строку необходимо разбить на отдельные «слова». При разбиении на слова командная оболочка использует понятие разделитель (delimiter). Разделитель — это символ, разделяющий слова; таким образом, командная строка — это последовательность слов (которые имеют значение) и разделителей (которые значения не имеют). Для командной оболочки разделителями являются символ пробела, символ табуляции и символ перевода строки. Количество разделителей между двумя соседними словами значения не имеет. Если необходимо передать в качестве параметра строку, содержащую символы-разделители, необходимо эту строку окружить одинарными или двойными кавычками.
user@desktop ~ $ echo "Hello, world."
Hello, world.
Параметры, которые могут быть переданы команде, подразделяются на два вида: первые — это внешние объекты, с которыми должна работать вызываемая команда (например, имена файлов, числа), вторые — это принимаемые программой модификаторы поведения. Последовательность в командной строке обычно такая: имя команды — модификаторы — объект(ы), где и модификаторы, и объекты необязательны.
В программах для UNIX параметры-модификаторы принято называть ключами (а также опциями и иногда флагами). Для формата ключей нет жёсткого стандарта, однако существуют договорённости, нарушать которые не принято. Однобуквенные ключи должны начинаться с символа «-» (как -h), такие ключи можно объединять: du -s -h и du -sh эквивалентны. Другой вид ключей — полнословные — начинается с двух символов «-» (например, --help, который чаще всего выдаёт подсказку). Особый вид ключей — параметрические, которые принимают собственный параметр: например, в команде grep -f access.log -n test имя файла access.log — часть параметра -f.
Проблемы могут возникнуть, если с символа «-» начинается не ключ, а обычный параметр, например, имя файла. В этом случае команда может интерпретировать этот параметр как ключ, что повлечет ошибку. Для выхода из этой ситуации используется специальная конструкция «--», указывающая, что список ключей закончен, и любые последующие строки следует интерпретировать как параметры. Например:
user@desktop ~ $ ls -l -- -test-file
-rw-r--r-- 1 user users 90 Сен 19 00:20 -test-file
