
- •Возникновение и первая редакция ос unix
- •Основные понятия
- •Пользователь
- •Интерфейс пользователя
- •Привилегированный пользователь
- •Программы
- •Команды
- •Процессы
- •Перенаправление ввода/вывода
- •Руководство
- •Поля руководства
- •Краткое описание Семантическое
- •Синтаксическое
- •Описание
- •Результат
- •Использование
- •Ссылки на другие объекты
- •Родословная
- •Особенности руководств
- •Смысловая структура системы руководств
- •Утилита man
- •Утилиты whatis и apropos
- •Работа с руководствами
- •Система info
- •Что такое удобство?
- •Требования к интерфейсу unix
- •Командная строка
- •Договоренности о формате командной строки
- •Разновидности файлов
- •Обычные файлы
- •Файлы-каталоги
- •Специальные файлы
- •Связывание файлов с разными именами
- •Именованные программные каналы
- •Файлы, отображаемые в виртуальную память
- •Синхронизация при параллельном доступе к файлам
- •Принципы защиты
- •Идентификаторы пользователя и группы пользователей
- •Защита файлов
- •Управление устройствами
- •Устройство как специальный файл
- •Драйверы устройств
- •Внешний и внутренний интерфейсы устройств
- •Традиционные средства интерактивного интерфейса пользователей
- •Командные языки и командные интерпретаторы
- •Общая характеристика командных языков
- •Базовые возможности семейства командных интерпретаторов
- •Bourne-shell
- •C-shell
- •Korn-shell
- •Команды и утилиты
- •Организация команды в ос unix
- •Перенаправление ввода/вывода и организация конвейера
- •Встроенные, библиотечные и пользовательские команды
- •10. Принципы сборки и установки пакетов.
Утилита man
Утилита man(1) - составная, ее вызов - это последовательное выполнение трех операций: поиск страницы руководства, форматирование найденной страницы и просмотр отформатированного текста.
Сами страницы помощи - это файлы, имена которых включают имена объектов (об этом будет подробнее рассказано в лекции 13). Файлы расположены в некотором базовом каталоге (например, в /usr/share/man или в /usr/X11R6/share/man) в подкаталогах man1, man2 и т. д. по количеству разделов. Таким образом, первая стадия работы утилиты man сводится к поиску первой страницы с именем объекта во всех секциях базовых каталогов. Кстати, именно поэтому секция, посвященная администрированию, сделана восьмой: если пользователь вызовет man без указания раздела, то при совпадении имен объектов он получит руководство по утилите, а системному администратору ничего не стоит написать в командной строке man 8.
Третья стадия работы man - вызов утилиты постраничного просмотра текста more(1). Подобие more, лишенное всех функций, кроме главной, можно найти даже в DOS. Во многих современных системах вместо more используется более мощная утилита less(1). Говорят: "Less is more than more". Утилита позволяет просматривать простой текст и текст, выходящий из-под nroff, при этом используются возможности терминала: "двойной удар" превращается в текст повышенной яркости, а подчеркивание - в подчеркнутый. (В системе Solaris man почему-то вызывает more с ключом, запрещающим обрабатывать подчеркнутый текст, отчего внешний вид руководства ухудшается.) Исходные тексты утилиты more в Solaris недоступны, и приходится подменять ее командным сценарием, в котором параметры командной строки передаются настоящей утилите more уже поправленными. Если вы хотите вывести руководство на печать, причем не на АЦПУ, а на современный PostScript-принтер, лучше не обрабатывать выдачу man, а воспользоваться предназначенной для этого утилитой troff(1). Получившаяся командная строка может быть, например, такой:
zcat /usr/share/man/man1/man.1.gz |
troff -man -Tps | grops | lpr
Для каждой из этих утилит есть руководство, а о том, что такое "|" ("конвейер"), рассказано в лекции 11.
Утилиты whatis и apropos
Самая краткая часть страницы руководства - однострочное поле NAME - тоже играет очень важную роль в системе информационной поддержки. Дело в том, что при установке руководства в систему содержимое этого поля добавляется в файл whatis, лежащий в базовом каталоге. Текстовый файл whatis - оглавление всей системы руководств, находящейся в соответствующем каталоге. Если поискать некоторое слово в этом файле, мы увидим только те заголовки руководств, в которых оно встречается. Поиском ключевых слов в whatis занимаются утилита whatis(1) и apropos(1), которая ищет не целое слово, а просто подстроку в строке.
Работа с руководствами
Допустим, мы хотим слить два файла, left и right, в один, состоящий из двух колонок (содержимое одного файла - слева, другого - справа). Спрашиваем, в описании каких утилит есть слово column:
$ apropos column
...
Команда apropos выдает несколько сотен строк относящихся в основном, к графическим функциям (секция 3). Нас же интересует утилита (секция 1). Используем grep(1), чтобы выбрать только строки, содержащие (1) (поле NAME начинается с контекстной ссылки на само руководство).
$ apropos column | grep "(1)"
colrm(1) - remove columns from a file
column(1) - columnate lists
Другое дело! Наверное, нам нужна утилита column? Читаем руководство.
$ man column
...
Не тут-то было... Смотрим поле SEE ALSO
$ man column | colcrt | sed -n '/SEE ALSO/,/^$/p'
SEE ALSO
colrm(1), ls(1), paste(1), sort(1)
(В примере за нас все сделал UNIX. Как именно? Читайте руководство по colcrt и главу 14). Из полученного списка на подозрении одна только команда paste
$ whatis paste
paste(1) - merge corresponding or subsequent lines of files
Точно! Читаем руководство.
$ man paste
...
Вот и результат:
$ paste left right