Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГОСЫ / operatsionnye_sistemy1.doc
Скачиваний:
44
Добавлен:
15.02.2016
Размер:
479.23 Кб
Скачать

Утилита 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

Соседние файлы в папке ГОСЫ