- •Возникновение и первая редакция ос unix
- •Основные понятия
- •Пользователь
- •Интерфейс пользователя
- •Привилегированный пользователь
- •Программы
- •Команды
- •Процессы
- •Перенаправление ввода/вывода
- •Руководство
- •Поля руководства
- •Краткое описание Семантическое
- •Синтаксическое
- •Описание
- •Результат
- •Использование
- •Ссылки на другие объекты
- •Родословная
- •Особенности руководств
- •Смысловая структура системы руководств
- •Утилита man
- •Утилиты whatis и apropos
- •Работа с руководствами
- •Система info
- •Что такое удобство?
- •Требования к интерфейсу unix
- •Командная строка
- •Договоренности о формате командной строки
- •Разновидности файлов
- •Обычные файлы
- •Файлы-каталоги
- •Специальные файлы
- •Связывание файлов с разными именами
- •Именованные программные каналы
- •Файлы, отображаемые в виртуальную память
- •Синхронизация при параллельном доступе к файлам
- •Принципы защиты
- •Идентификаторы пользователя и группы пользователей
- •Защита файлов
- •Управление устройствами
- •Устройство как специальный файл
- •Драйверы устройств
- •Внешний и внутренний интерфейсы устройств
- •Традиционные средства интерактивного интерфейса пользователей
- •Командные языки и командные интерпретаторы
- •Общая характеристика командных языков
- •Базовые возможности семейства командных интерпретаторов
- •Bourne-shell
- •C-shell
- •Korn-shell
- •Команды и утилиты
- •Организация команды в ос unix
- •Перенаправление ввода/вывода и организация конвейера
- •Встроенные, библиотечные и пользовательские команды
- •10. Принципы сборки и установки пакетов.
Командная строка
Логичным ответом на все четыре принципа построения проективной системы вместе с перечисленными требованиями стал интерфейс командной строки. Это такой способ взаимодействия человека и машины, при котором пользователь вводит с терминала текстовую команду системе, а система ее выполняет, отчитываясь о работе также в текстовом виде. Этот способ не противоречит сказанному выше и при грамотной организации труда весьма удобен для взаимодействия с проективными системами.
Интерпретатор командной строки в UNIX - shell (в русских переводах - "оболочка") - типичная программа этого рода. Вернее, семейство программ, потому что (как это часто бывает в UNIX) на разные вкусы существуют по-разному оформленные решения. Можно даже сказать, что терминал плюс командный интерпретатор UNIX и есть интерфейс командной строки, прочие же системы лишь с той или иной долей остроумия пародируют его.
Было бы нерационально для каждого элементарного пользовательского действия заготавливать еще одну команду (как непременно случится, если пользовательские действия будут наглядно представлены в виде изображений). Проективная система ориентирована на создание решений, а не на поиск, и гораздо правильнее давать человеку в руки инструмент решения класса задач, тогда свою задачу человек решит, управляя этим инструментом.
Таково понимание командной строки в shell и UNIX. Вводимая пользователем строка (напомним, что обмен данными - только текстовый) воспринимается интерпретатором как последовательность "слов", разделенных пробелами и/или символами табуляции. Первое слово строки - собственно команда (ей может предшествовать несколько присвоений переменным окружения этой команды каких-нибудь значений), последующие - передаваемые ей параметры (arguments). Часто вместо "параметры" говорят "аргументы". Выходит, что мы не просто командуем машиной, но и аргументируем свои решения. Параметры видоизменяют работу команды; иными словами, при помощи параметров пользователь выделяет из всего класса решаемых командой задач одну, а также описывает конкретные исходные данные. Например, команда shutdown выполняет останов системы. Если не указывать никаких параметров, останов начнется через пять минут, в течение которых shutdown предупреждает об этом всех работающих в системе пользователей. А вот команда shutdown now приступит к останову системы немедленно.
Чтобы не запутаться в терминологии, припомним главу 5, в которой говорилось об утилитах. Командный интерпретатор самостоятельно выполняет только небольшое число подаваемых ему команд; это, как правило, команды, связанные с изменением свойств самого интерпретатора: его настройка, смена текущего каталога, элементы программирования и т. п. Подавляющее большинство команд - это имена утилит, т. е. специально для этого написанных программ. Если команда не опознана как внутренняя команда shell, она интерпретируется как имя утилиты. Система эту утилиту запускает и передает ей все параметры из командной строки.
Все, что команда считает нужным сообщить пользователю о своей работе, передается в текстовом виде на тот же терминал. Всю переданную командой информацию принято называть ее выдачей. Выдача одной утилиты ничем, кроме смысла, не отличается от выдачи другой утилиты или от сообщения системы: текст как текст. Конечно, если пользователь опасается запутаться, у него всегда есть возможность отделить разные выдачи друг от друга.