Man-страницы/Навигация

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Man page/Navigate and the translation is 100% complete.

Other languages:
English • ‎español • ‎français • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어

Это руководство показывает как передвигаться по страницам справки, используя команду man.

Введение

Программа man

Каждый использовал ее в какой-то момент своей работы в 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 Directory Description
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 page name]. Второй способ - man <section> [man page name]. Давайте рассмотрим для примера 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-страницам

Навигация по страницам справки достаточно проста. Для передвижения на одну строку вверх и вниз, используйте клавиши управления курсором Up и Down. Для передвижения вверх, страница за страницей, вы можете использовать клавиши Page up и Page down. Однако, заметьте, что эти инструкции по навигации предполагают то, что переменная среды PAGER настроена на использование программы для просмотра по умолчанию — less. 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. Это перенесет вас на конец страницы:

Код Конец man-страницы после нажатия 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-страницам, также доступно следующее:

  • app-text/man2html — программа для конвертации man-страниц в html.
  • app-text/tkman — просмотрщик man-страниц, основанный на tk.

Веб-браузер KDE kde-base/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.