Man-страницы/Навигация
Это руководство показывает, как передвигаться по страницам справки, используя команду man.
Введение
Программа man
Каждый использовал eё в какой-то момент своей работы в Linux: команду man. В то время, как программа man сама по себе кажется довольно простой в использовании, она имеет больше дополнительных возможностей, чем просто прокручивание страницы. Этот документ предназначен для того, чтобы пролить свет на эти возможности.
Структура страниц справки
Страницы справки в основном хранятся в каталоге /usr/share/man. Однако, если путь к странице справки указан в переменной среды MANPATH, команда man сможет её найти. Gentoo в основном хранит переменную MANPATH в /etc/env.d. Внутри указанных в начале каталогов расположены несколько каталогов со структурой manX, где X — это номер секции. Например, стандартное расположение страниц справки может выглядеть следующим образом:
user $
ls /usr/share/man | grep man
man0p man1 man1p man2 man3 man3p man4 man5 man6 man7 man8 man9 mann
Действующая нумерация разделов кажется достаточно стандартной. Однако, обратите внимание на папки mann и несколько папок man#p. Следующая таблица перечисляет каталоги со страницами справки, расположенные выше и то, что в них содержится.
Папка Man | Описание |
---|---|
man0p | Здесь "p" означает POSIX, как и для других каталогов, содержащих p в их названии. Man-страницы в этом каталоге описывают функциональность различных файлов заголовков POSIX. |
man1 | Этот раздел предназначен для стандартных команд. Большинство программ размещают свои страницы справки здесь, поэтому этот раздел будет самым большим. |
man1p | Этот раздел описывает POSIX-версии команд, содержащихся в 1p. Так как он только описывает простые команды, он будет меньшим чем man1. |
man2 | Этот раздел описывает системные вызовы ядра Linux. |
man3 | Этот раздел описывает функции стандартной библиотеки C. |
man4 | Этот раздел описывает специальные файлы устройств. Эти файлы устройств как правило предназначены для ядра, но x11-base/xorg-x11 также хранит здесь свои файлы. |
man5 | Этот раздел описывает как состав определенных файлов, так и те файлы, какие использует программа. Читающие этот документ, могут быть знакомы со ссылками на man 5 portage для описания файловой структуры Portage, или man 5 make.conf для описания структуры make.conf. |
man6 | Этот раздел включает игры и другие развлечения. |
man7 | Данный раздел описывает стандартные и другие различные элементы. Эти стандартные элементы включают такие вещи как наборы символов, выражения SQL, стандарты ISO и регулярные выражения. |
man8 | Этот раздел описывает команды администрирования (те, которые обычно запускаются администратором). |
man9 | Этот раздел немного пустой, но он предназначен для хранения документации о различных частях ядра. |
mann | Этот раздел в основном используется dev-lang/tcl или dev-lang/tk. Буква "n" означает new (новый). |
В то время как это не самый полный и подробный список, он охватывает те страницы справки в которых заинтересовано большинство. Однако, иногда Вы можете узнать что делает тот или иной раздел просто посмотрев эту таблицу. В следующей главе рассмотрено использование команды man для прохода по этой структуре.
Работа со структурой страниц справки
Просмотр структуры страниц справки
Теперь, когда мы понимаем структуру man-страниц, мы можем начать искать команды. Иногда мы можем сосредоточиться на той man-странице, которая нам требуется. Первом способом будет поиск по разделу. Для того, чтобы найти описание раздела, можно использовать команду man <section> intro следующим образом:
user $
man 3 intro
## (Output slightly modified to fit the document properly) INTRO(3) Linux Programmer's Manual INTRO(3) NAME intro - Introduction to library functions DESCRIPTION This chapter describes all library functions excluding the library functions described in chapter 2, which implement system calls. There are various function groups which can be identified by a letter which is appended to the chapter number: ....
К сожалению, это не всегда работает! Однако, к счастью для нас, существует другой способ поиска команд, которые могут возвращать разные результаты (такие как вызовы библиотеки и системные команды имеющие то же самое имя). Для того, чтобы это сделать, мы будем использовать опцию -K
команды man, как в данном случае:
user $
man -K sleep
/usr/share/man/man0p/time.h.0p.gz? [ynq] n /usr/share/man/man0p/unistd.h.0p.gz? [ynq] n /usr/share/man/man2/alarm.2.gz? [ynq] n /usr/share/man/man2/pause.2.gz? [ynq] n /usr/share/man/man2/futex.2.gz? [ynq] n /usr/share/man/man2/nanosleep.2.gz? [ynq] y /usr/share/man/man2/semop.2.gz? [ynq] q
Иногда, результат может быть намного большим. В этом случае лучшим выходом может быть указание большего количества специфических ключевых слов. Теперь, когда мы знаем где найти man-страницу, в следующей секции мы рассмотрим просмотр этих страниц.
Просмотр man-страниц
Просмотр страниц справки может быть выполнен двумя способами, во-первых, с помощью man [номер man–страницы]
. Второй способ - man <section> [номер man–страницы]
. Для примера, рассмотрим sys-devel/bc. Я могу просмотреть, например, самую первую из страниц справки, которая описывает bc (что будет разделом 1, так как это наименьший номер раздела, содержащего man-страницу по bc):
user $
man bc
bc(1) bc(1) NAME bc - An arbitrary precision calculator language ...
Однако, что если мне нужна POSIX-версия? Тогда я могу использовать следующую форму записи.
user $
man 1p bc
BC(P) POSIX Programmer's Manual BC(P) NAME bc - arbitrary-precision arithmetic language ...
И страница показана. Теперь, когда мы получили требуемую man–страницу, самое время с ней поработать. В следующем разделе мы рассмотрим навигацию и поиск.
Навигация и поиск по man-страницам
Навигация по страницам справки достаточно проста. Для передвижения на одну строку вверх и вниз, используйте клавиши управления курсором ↑ и ↓. Для передвижения вверх, страница за страницей, вы можете использовать клавиши Page up и Page down. Однако, заметьте, что эти инструкции по навигации предполагают то, что переменная среды PAGER настроена на использование программы для просмотра по умолчанию — less. Less также имеет несколько других команд для навигации, но обычно достаточно использовать клавиши управления курсором:
e ^E j ^N CR * Вперед на одну строку (или N строк).
y ^Y k ^K ^P * Назад на одну строку (или N строк)
f ^F ^V SPACE * Вперед на одно окно (или N строк).
b ^B ESC-v * Назад на одно окно (или N строк).
z * Назад на одно окно (и установить окно в N).
w * Назад на одно окно (и установить окно в N).
ESC-SPACE * Вперед на одно окно, но не останавливаться в конце файла.
d ^D * Вперед на одно полуокно (и установить полуокно в N).
u ^U * Назад на одно полуокно (и установить полуокно в N).
ESC-) RightArrow * Сдвинуть вид вправо на половину ширины окна (или N позиций).
ESC-( LeftArrow * Сдвинуть вид влево на половину ширины окна (или N позиций).
F Вперед всегда (вроде "tail -f").
Поиск, однако, более интересен. Два наиболее простых варианта поиска - использование /pattern
и ?pattern
. Первая версия ищет текст по направлению вниз, а вторая - вверх. pattern
- это регулярное выражение, которое описывается в man 7 regex. Давайте, для примера, возьмем поиск параметра командной строки -D
для emerge. Сперва, откройте man–страницу:
user $
man emerge
Затем, на экране, нажмите клавишу / для вызова командной строки для поиска вперед и введите наш запрос:
gracefully handles updating installed packages to newer releases as well.
It handles both source and binary packages, and it can be used to create
binary packages for distribution.
EBUILDS, TBZ2S, CLASSES AND DEPENDENCIES
/\-D
Символ
\
требуется для экранирования символа -
, который в обычном случае мог бы использоваться как часть регулярного выражения.Эта команда выполнит поиск на данной man-странице и сфокусируется на искомом элементе.
--deep (-D)
When used in conjunction with --update, this flag forces emerge to consider the entire
dependency tree of packages, instead of checking only the immediate dependencies of
the packages. As an example, this catches updates in libraries that are not directly
listed in the dependencies of a package.
Если вы случайно столкнулись с похожим результатом поиска и хотите продолжить поиск тех же самых результатов, просто нажмите клавишу / снова и нажмите Enter (т. е. не вводя туда ничего). Это заставит систему поиска указывать на последний используемый шаблон для поиска. Теперь, на некоторых страницах справки, параметры сначала перечислены, а впоследствии объяснены. Для примера возьмем man-страницу man 5 portage. Она перечисляет используемые файлыы, затем объясняет их использование. Поиск вперед несколько раз мог бы возвратить требуемые результаты, но существует более легкий способ этого достичь, с помощью второй формы поиска, поиска назад. Давайте используем ее для того чтобы найти описание файла package.unmask. Сперва, введите man 5 portage:
user $
man 5 portage
Теперь, нажмите Shift+g. Это перенесет вас на конец страницы:
SEE ALSO
emerge(1), ebuild(1), ebuild(5), make.conf(5)
Portage 2.0.51 Jan 2004 PORTAGE(5)
lines 418-442/442 (END)
А сейчас мы пойдем дальше, и введем шаблон для обратного поиска: ?pattern
. Сперва нажмите клавишу ? для того чтобы вызвать командную строку, а затем введите package.unmask, т. е. наш запрос:
SEE ALSO
emerge(1), ebuild(1), ebuild(5), make.conf(5)
Portage 2.0.51 Jan 2004 PORTAGE(5)
?package.unmask
Затем нажмите Enter для получения результата:
package.unmask
Just like package.mask above, except here you list packages you want to unmask.
Useful for overriding the global package.mask file (see below). Note that
this does not override packages that are masked via KEYWORDS.
...
И поиск завершен! Заметьте то, что как и в случае с /
, использование поиска ?
без строки шаблона использует последний шаблон для поиска.
Выводы
Это завершает наше руководство по команде man. Надеемся, что это пролило некоторый свет на навигацию по страницам справки, и, может быть, даже дало несколько новых советов более опытным пользователям. Для тех, кто предпочитает альтернативные способы навигации по man-страницам, также доступно следующее:
- sys-apps/man2html — Программа для конвертации man-страниц в html.
- app-text/tkman — Просмотрщик man-страниц, основанный на tk.
Веб-браузер KDE kde-apps/konqueror также может просматривать man-страницы, используя синтаксис man:
в адресной строке.
This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Chris White
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.