Команда man

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

Рассматриваемая утилита использует текстовые файлы специального формата, поставляемые разработчиками системы и сторонних приложений и распространяемые в составе операционной системы. Для ускорения доступа к содержимому этих файлов осуществляется их индексирование силами системной утилиты updatedb (данная утилита запускается по таймеру и при установке новых пакетов ПО).

Руководства разделены на несколько секций, а именно:

  1. Исполняемые файлы или сценарии командной оболочки
  2. Системные вызовы (функции, предоставляемые приложениям ядром ОС)
  3. Библиотечные вызовы (функции системных библиотек)
  4. Специальные файлы (обычно из директории /dev)
  5. Форматы файлов конфигурации (обычно из директории /etc)
  6. Игры
  7. Другое (включая макропакеты и описания соглашений)
  8. Команды для системного администрирования (обычно доступные лишь пользователю root)
  9. Функции ядра ОС (не стандартизированная секция)

Каждая страница руководства состоит из нескольких разделов. В зависимости от секции руководства, этими разделами могут быть:

  • ИМЯ (NAME)
  • СИНТАКСИС (SYNOPSYS)
  • КОНФИГУРАЦИЯ (CONFIGURATION)
  • ОПИСАНИЕ (DESCRIPTION)
  • ПАРАМЕТРЫ (OPTIONS)
  • КОД ЗАВЕРШЕНИЯ (EXIT STATUS)
  • ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ (RETURN VALUE)
  • ОБРАБОТКА ОШИБОК (ERRORS)
  • ОКРУЖЕНИЕ (ENVIRONMENT)
  • ФАЙЛЫ (FILES)
  • ВЕРСИИ (VERSIONS)
  • СООТВЕТСТВИЕ СТАНДАРТАМ (CONFORMING TO)
  • ЗАМЕЧАНИЯ (NOTES)
  • ОШИБКИ (BUGS)
  • ПРИМЕР (EXAMPLE)
  • АВТОРЫ (AUTHORS)
  • СМОТРИ ТАКЖЕ (SEE ALSO)

Базовый синтаксис команды выглядит следующим образом:

$ man [параметры] [номер-раздела] имя-команды

Команда принимает ряд параметров, позволяющих упростить работу с базой данных руководств. Так, параметр -f позволяет найти номера секций, в которой расположены руководства с заданным именем, параметр -a позволяет вывести найденные руководства с заданным именем, а параметр -w — непосредственно вывести имя файла руководства. Кроме того, существует параметр -I, позволяющий не учитывать регистр введенного имени команды.

Следует знать, что утилита не просто выводит описание команды, файла конфигурации или системного вызова, а поддерживает режим прокрутки текста, что может оказаться полезным в случае использования текстовой консоли. Поэтому вы должны использовать клавиши со стрелками и для плавной прокрутки текста вверх и вниз, клавиши PageUp и PageDown для его постраничной прокрутки, клавиши / и ? для поиска в тексте сверху вниз и снизу вверх соответственно и клавишу n для перехода к следующему найденному фрагменту. Разумеется, для начала поиска нужно ввести поисковый запрос и нажать на клавишу Enter. Для выхода из режима чтения руководства следует использовать клавишу Q, для получения списка всех горячих клавиш — клавишу H.

Примеры использования

Получение информации о команде

Для получения информации о команде достаточно передать утилите имя этой команды:

$ man ls
LS(1)                           User Commands                           LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [file]...

DESCRIPTION
       List information about the FILEs (the current directory by default).
       Sort entries alphabetically if none of -cftuvSUX nor --sort is speci‐
       fied.

Очевидно, что в результате была выведена нужная страница руководства.

Вы также можете указать секцию, в которой расположено руководство. К примеру, руководство по работе с командой useradd расположено в секции 8, так как команда предназначена для системных администраторов.

$ man 8 useradd
useradd(8)               Команды управления системой               useradd(8)

НАЗВАНИЕ
       useradd - регистрирует нового пользователя или изменяет информацию по
       умолчанию о новых пользователях

СИНТАКСИС
       useradd [параметры] УЧЁТНАЯ_ЗАПИСЬ

       useradd -D

       useradd -D [параметры]

Как несложно заметить, не все страницы руководств локализованы (даже страница руководства утилиты useradd, фрагмент которой показан выше, локализована не полностью), поэтому материалы данного сайта являются вполне актуальными.

Получение информации о системных вызовах и библиотечных функциях

В процессе разработки ПО нередко приходится искать информацию о параметрах библиотечных функций и системных вызовов.

Системные вызовы размещены в рамках секции 2:

$ man 2 ioctl
IOCTL(2)                  Linux Programmer's Manual                  IOCTL(2)

NAME
       ioctl - control device

SYNOPSIS
       #include <sys></sys>

       int ioctl(int fd, unsigned long request, ...);

DESCRIPTION
       The ioctl() system call manipulates the underlying device parameters of
       special files. In particular, many operating characteristics of char‐
       acter special files (e.g., terminals) may be controlled with ioctl()
       requests. The argument fd must be an open file descriptor.

ioctl — один из системных вызовов Unix для управления устройствами посредством соответствующих им специальных файлов. Как видно, руководство по его использованию доступно для пользователя системы.

Библиотечные функции размещены в секции 3:

$ man 3 printf
PRINTF(3)             Linux Programmer's Manual                PRINTF(3)

NAME
       printf, fprintf, dprintf, sprintf, snprintf, vprintf, vfprintf, vd‐
       printf, vsprintf, vsnprintf - formatted output conversion

SYNOPSIS
       #include <stdio.h></stdio.h>

       int printf(const char *format, ...);
       int fprintf(FILE *stream, const char *format, ...);
       int dprintf(int fd, const char *format, ...);
       int sprintf(char *str, const char *format, ...);
       int snprintf(char *str, size_t size, const char *format, ...);

Разумеется, информация о функциях стандартной библиотеки языка C также доступна пользователю. В данном случае следует обратить внимание на тот факт, что указание секции 3 обязательно, ведь существует одноименная утилита, руководство для которой размещено в секции 1 и отображается по умолчанию:

$ man -f printf
printf (1) - format and print data
printf (3) - formatted output conversion

Описанным выше образом может быть осуществлен поиск руководств. Если вы желаете ознакомиться со всеми найденными руководствами непосредственно, вы можете использовать параметр -a:

$ man -a printf

$ man -a printf
--Man-- след: printf(3) [ просм (ввод) | пропуск (Ctrl-D) | выход (Ctrl-C) ]

При использовании данного параметра все руководства, следующие за первым, можно пропустить.