- •1.4 Структура операционных систем
- •1.4.1 Монолитная система
- •1.4.2 Многоуровневая структура ос
- •1.4.3 Модель экзоядра
- •1.4.4 Микроядерная архитектура (модель клиент-сервер)
- •1.4.5 Обобщение сравнения моделей
- •Интерфейс пользователя
- •Команды
- •Командная строка
- •Договоренности о формате командной строки
- •C.5.4. Переназначение потоков.
- •C.5.5. Переназначение стандартного потока ошибок (в unix).
- •C.5.6. Перенаправление потока ввода.
- •C.5.7. Конвейерная обработка.
- •Управление потоком выполнения
- • Стандартный ввод/вывод
- •Диагностика и другие виды вывода
- •Командные строки и конвейеры
- •Специальные символы
- •8.2.1. Запуск команды в фоновом режиме (символ &)
- •8.2.2. Последовательное выполнение команд (символ ;)
- •8.2.4. Отмена специального значения (метасимвол кавычки)
- •8.2.4.1. Использование кавычек для отмены значения символа пробел
- •Использование кавычек
- •Окружение
- •Переменная окружения
- •Взаимодействие процессов посредством окружения
- •Переменные Shell
- •Позиционные параметры
- •Файловая система
- •Структура файловой системы
- •Монтируемые файловые системы
- •Интерфейс с файловой системой
- •Разновидности файлов
- •Обычные файлы
- •Файлы-каталоги
- •Специальные файлы
- •Связывание файлов с разными именами
- •Именованные программные каналы
- •Файлы, отображаемые в виртуальную память
- •Синхронизация при параллельном доступе к файлам
- •Процессы
- •Процессы
- •Атрибуты процесса
- •Идентификатор процесса (pid)
- •Идентификатор родительского процесса (ppid)
- •Поправка приоритета (ni)
- •Терминальная линия (tty)
- •Реальный (uid) и эффективный (euid) идентификаторы пользователя
- •Реальный (gid) и эффективный (egid) идентификаторы группы
- •Атрибуты файлов
- •Порождение процессов в Linux
- •Управление процессами
- •Типы процессов
- •Права доступа к файлам и каталогам
- •Жизненный цикл процесса в unix и основные системные вызовы
- •Контекст процесса
- •Приоритеты процессов
- •Создание процесса
- •Сон и пробуждение
- •Завершение выполнения процесса
- •Получение информации о процессах
- •Управление приоритетом процессов
- •Сигналы: посылка и обработка
- •Доставка и обработка сигнала
- •Основные сигналы
- •Посылка сигналов
- •Сигналы, посылка сигналов, команда kill
- •Приоритет выполнения процесса, команда nice
- •Текущий контроль процессов, команды ps и top
- •Защита фоновых процессов, команда nohup
- •Пользователь
- •. Привилегированный пользователь
- •Управление пользователями и правами доступа База данных пользователей системы
- •Изменение базы данных пользователей
- •Изменение прав доступа
- •Ограничения сеанса пользователя
- •Команды архивирования файлов
- •4.7.1. Программа tar
- •4.7.2. Программа gzip
- •4.7.3. Программа bzip2
- •Команды поиска grep и find
- •5.5. Перенаправление ввода/вывода, каналы и фильтры
- •5.5.2 Оператор |
- •5.5.3 Фильтры
- •Сигналы
- •Приложение. Список реентерабельных функций
- •Регистрация системных сообщений, система syslog
- •Конфигурационный файл демона syslogd
- •Info Информационные сообщения
- •Учет продолжительности соединений
- •Пользователи и группы
- •Файл /etc/passwd
- •Файл /etc/group
- •Файл /etc/shadow
- •Системные регистрационные имена
- •Изменение действующего идентификатора пользователя
- •Изменение действующего идентификатора группы
- •Изменение пароля и характеристик учетной записи, связанных с регистрацией
- •Правила построения паролей
- •Действие команды passwd
- •Устаревание паролей
- •Показ атрибутов пароля
- •Стандартные значения атрибутов
- •Просмотр базы данных учетных записей
- •Получение списка зарегистрировавшихся пользователей
- •Средства создания, изменения и удаления учетных записей пользователей
- •Средства создания, изменения и удаления групп
Командная строка
Логичным ответом на все четыре принципа построения проективной системы вместе с перечисленными требованиями сталинтерфейс командной строки. Это такой способ взаимодействия человека и машины, при котором пользователь вводит с терминала текстовую команду системе, а система ее выполняет, отчитываясь о работе также в текстовом виде. Пользователь этот отчет читает, соображает, принимает решение (мы имеем право требовать от пользователя некоторой твердости духа, гарантированной О) и вводит новую команду... и так до победного конца. Этот способ не противоречит сказанному выше и при грамотной организации труда весьма удобен для взаимодействия с проективными системами.
Интерпретатор командной строки в UNIX - shell (в русских переводах - "оболочка") - типичная программа этого рода. Вернее, семейство программ, потому что (как это часто бывает в UNIX) на разные вкусы существуют по-разному оформленные решения. Можно даже сказать, что терминал плюс командный интерпретатор UNIX и есть интерфейс командной строки, прочие же системы лишь с той или иной долей остроумия пародируют его.
Было бы нерационально для каждого элементарного пользовательского действия заготавливать еще одну команду (как непременно случится, если пользовательские действия будут наглядно представлены в виде изображений). Это означало бы нарушение У в самой грубой форме. Проективная система ориентирована на создание решений, а не на поиск, и гораздо правильнее давать человеку в руки инструмент решения класса задач, тогда свою задачу человек решит, управляя этим инструментом.
Таково понимание командной строки в shell и UNIX. Вводимая пользователем строка (напомним, что обмен данными - только текстовый) воспринимается интерпретатором как последовательность "слов", разделенных пробелами и/или символами табуляции; об этом подробнее рассказано в лекции 8. Первое слово строки - собственно команда (ей может предшествовать несколько присвоений переменным окружения этой команды каких-нибудь значений, подробнее о переменных окружения рассказано в лекции 11), последующие - передаваемые ей параметры (arguments). Часто вместо " параметры " говорят "аргументы". Выходит, что мы не просто командуем машиной, но и аргументируем свои решения. Параметры видоизменяют работу команды ; иными словами, при помощи параметров пользователь выделяет из всего класса решаемых командой задач одну, а также описывает конкретные исходные данные. Например, команда shutdown выполняет остановку системы. Если не указывать никаких параметров, остановка начнется через пять минут, в течение которых shutdown предупреждает об этом всех работающих в системе пользователей. А воткоманда shutdown now приступит к останову системы немедленно.
Чтобы не запутаться в терминологии, припомним главу 5, в которой говорилось об утилитах. Командный интерпретаторсамостоятельно выполняет только небольшое число подаваемых ему команд ; это, как правило, команды, связанные с изменением свойств самого интерпретатора: его настройка, смена текущего каталога, элементы программирования и т. п. Подавляющее большинство команд - это имена утилит, т. е. специально для этого написанных программ. Если команда не опознана как внутренняя команда shell, она интерпретируется как имя утилиты. Система эту утилиту запускает и передает ей все параметры изкомандной строки.
Все, что команда считает нужным сообщить пользователю о своей работе, передается в текстовом виде на тот же терминал. Всю переданную командой информацию принято называть ее выдачей. Выдача одной утилиты ничем, кроме смысла, не отличается от выдачи другой утилиты или от сообщения системы: текст как текст. Конечно, если пользователь опасается запутаться, у него всегда есть возможность отделить разные выдачи друг от друга.