Man

Материал из Wiki Open book
Перейти к: навигация, поиск

Оглавление | Предыдущая страница | Следующая страница


Содержание

Man

Основной системой помощи в Linux является набор «страниц руководства» (manual pages). Каждая «страница» выполнена в виде отдельного текстового файла, в котором для форматирования текста используются специальные управляющие последовательности (теги). Страницы руководства можно сравнить с HTML-файлами, но вместо тегов HTML используются свой собственный вариант разметки.

Для просмотра HTML-страниц используются специальные программы-браузеры. Точно так же, для просмотра страниц руководства используется специальный браузер — программа man.

man [параметры] [секция] файл

При вызове программы всегда указывается имя страницы руководства. Например, для получения справки по программе man в командной строке надо набрать: man man. В результате на экране будет показана соответствующая страница:

man(1)

NAME
       man - format and display the on-line manual pages

SYNOPSIS
       man  [-acdfFhkKtwW]  [--path]  [-m system] [-p string] [-C config_file]
       [-M pathlist] [-P pager] [-S section_list] [section] name ...


DESCRIPTION
       man formats and displays the on-line manual pages.  If you specify 
       section,  man  only looks in that section of the manual.  name is
       normally the name of the manual page, which is typically the name of
       a  command, function,  or  file. However, if name contains a slash
      (/) then man
.....

На самом деле man — это программа-координатор. Она сама не показывает содержимое страниц, она запускает целую цепочку действий, в результате которых на экране появляется содержимое страницы. В первую очередь man вызывает программу-парсер, задача которой состоит в превращении непонятных тегов в понятный пользователю текст. Ниже показано, как на самом деле выглядит страница руководства по программе man, точнее, только маленькая часть страницы.

.TH man 1 "September 2, 1995"
.LO 1
.SH NAME
man \- format and display the on-line manual pages
.SH SYNOPSIS
.B man
.RB [ \-acdfFhkKtwW ]
.RB [ --path ]
.RB [ \-m
.IR system ]
.RB [ \-p
.IR string ]
.RB [ \-C
.IR config_file ]

Программа просмотра

В качестве парсера обычно используется одна из разновидностей программы roff. В Linux обычно используется nroff (в Linux nroff – это скрипт, который эмулирует работу одноименной программы. Для эмуляции он использует другую программу – groff).

После подготовки текста, он (текст) передается программе, в которой пользователь будет его смотреть. В Linux для просмотра используется программа less. Соответственно, при просмотре страницы руководства можно использовать все команды программы less.

Если, по каким либо причинам, less вас не устраивает, для просмотра страниц руководства вы можете использовать другую программу. Чтобы указать, какая программа будет использована, ее имя можно передать man при помощи параметра –Р. Например:

man -P /usr/bin/most man

Если вы предполагаете постоянно пользоваться другой программой просмотра, определите переменную среды окружения PAGER.

export PAGER=/usr/bin/most

Эту строку необходимо добавить в файл /etc/profile или ~/.bash_profile (при условии, что вы пользуетесь шелл bash.).

Директории

На любую программу в Linux есть своя собственная страница руководства. Программ много, значит, и страниц не меньше. Как уже говорилось выше, страницы руководства — это отдельные файлы, которые обычно находятся в директории /usr/share/man. Но, поскольку файлов много, их не хранят в одной директории. Если посмотреть содержимое директории /usr/share/man, в ней вы увидите директории man1, man2 и так по man9. Каждая из перечисленных директорий предназначена для хранения определенного типа информации.

man1 Программы, доступные всем пользователям системы.
man2 Функции системы. Имеются в виду функции, которые программисты могут использовать в своих программах.
man3 Функции различных библиотек. Если в системе установлены отличные от C языки программирования, например Perl, описание функций этих языков тоже будут располагаться в этой директории.
man4 Описание устройств. К сожалению, в этой директории находится документации далеко не по всем устройствам, которые могут присутствовать в Linux. За более подробной информацией обращайтесь к документации, поставляемой с исходными кодами ядра Linux.
man5 Описание конфигурационных файлов. Формат многих конфигурационных файлов описывается в страницах руководства программы.
man6 Описание игр.
man7 Разное.
man8 Программы, доступные администратору системы.
man9 В Linux не используется.

MANPATH

Когда в систему устанавливается новая программа, вместе с ней устанавливаются страницы руководства этой программы. Иногда эти страницы помещаются не в стандартные директории. Программе man можно указать, в каких директориях, кроме /usr/share/man, она должна искать страницы. Для этих целей используется переменная среды окружения MANPATH, в которой через двоеточие перечисляются дополнительные директории. Например, на моем рабочем компьютере переменная содержит следующие директории.

$ echo $MANPATH
/usr/local/man:/usr/man:/usr/X11R6/man:/usr/lib/java/man:/usr/lib/qt/doc/man:/opt/samba/man:/usr/share/texmf/man
$

Поиск в страницах руководства

Для поиска информации в страницах руководства предназначены программы whatis и apropos.

whatis слово
apropos слово

Whatis ищет искомое слово в специальной базе данных — /usr/share/man/whatis. Базу данных можно создать при помощи программы makewhatis. Обычно база создаются автоматически, и вам навряд ли придется запускать makewhatis (на моей памяти, я ни разу ее не использовал).

Например, необходимо найти информацию о программе kill.

$ whatis kill
kill                 (1)  - terminate a process
kill                 (2)  - send signal to a process
kill [builtins]      (1)  - bash built-in commands, see bash(1)
$

Обратите внимание на число в скобках — это номер директории man, в которой находится страница руководства. То есть описание программы kill надо искать в man1, а функции kill — в man2. Если просто набрать man kill, вы всегда будете получать описание программы. Дело в том, что man ищет страницу руководства по порядку начиная с директории man1 и заканчивая man9. Поскольку описание программы kill находится в первой директории, именно эта страница руководства будет показана man. Для того, чтобы увидеть описание функции kill, при вызове man следует явно указать номер директории, в которой необходимо искать страницу руководства.

$ man 2 kill
KILL(2)                 Linux Programmer's Manual                 KILL(2)



NAME
       kill - send signal to a process

SYNOPSIS
       #include <sys/types.h>
       #include <signal.h>

       int kill(pid_t pid, int sig);

DESCRIPTION
       The kill system call can be used to send any signal to any process
       group or process.
......

Программа apropos почти полностью повторяет функциональность программы whatis. Но ищет не слово целиком, а часть слова. Например, при попытке найти информацию о kill, Вы получите все слова, в которых встречается последовательность символов kill.

$ apropos kill
kill                 (1)  - terminate a process
kill                 (2)  - send signal to a process
kill [builtins]      (1)  - bash built-in commands, see bash(1)
killall              (1)  - kill processes by name
killchar [curs_termattrs] (3x)  - curses environment query routines
killpg               (2)  - send signal to a process group
killpg               (3)  - send signal to all members of a process group
killwchar [curs_termattrs] (3x)  - curses environment query routines
pkill [pgrep]        (1)  - look up or signal processes based on name and other attributes
pthread_kill [pthread_sigmask] (3)  - handling of signals in threads
pthread_kill_other_threads_np (3)  - terminate all threads in program except calling thread
rotatelogs           (8)  - rotate Apache logs without having to kill the server
skill                (1)  - send a signal or report process status
snice [skill]        (1)  - send a signal or report process status
timelimit            (1)  - spawn a subprocess and if the child does not finish within the time limit either kill it, or exit, leaving the child in the background
tkill                (2)  - send a signal to a single process
yes                  (1)  - output a string repeatedly until killed
zap [mysql_zap]      (1)  - a perl script used to kill processes
$

Русские man pages

В вашей системе могут быть установлены русские страницы руководства. Они обычно располагаются в директории /usr/share/man/ru. Увидеть их можно только в том случае, если в системе определены переменные локализации (LANG и LC_*), причем они должны указывать на русскую локаль. В дистрибутиве Slackware Linux русских страниц руководства крайне мало, это американский дистрибутив. Да они и не нужны. Если говорить о переводах страниц руководства, он (перевод) иногда запаздывает и может быть выполнен не качественно. Кроме того, существует большое количество версий одной и той же программы. Вы уверенны, что русский перевод будет именно по установленной у вас версии?

Источник — «http://kryukov.biz/wiki/Man»
Инструменты
    
Личные инструменты