Используемые в Linux электронные справочные системы (online help) являются логичным следствием как его родства с семейством операционных систем UNIX — страницы руководства man(1) (manual pages), так и принадлежностью к свободному программному обеспечению под эгидой движения GNU — справочная система info(1).
Следует отметить, что понятие online в контексте справочных систем вовсе не означает их доступность через Интернет, как это часто, но ошибочно, воспринимается сегодня. В рассматриваемом контексте online означает немедленную доступность справочной информации непосредственно из программного обеспечения, по сравнению со справочной информацией, доступной в печатной, offline, форме.
Содержимое
Система страниц руководства
Самой известной справочной системой, сопровождающей UNIX практически с момента ее рождения, является справочная система страниц руководства, информация из которой доступна при помощи команд man(1), apropos(1) и whatis(1).
Справочная система man-pages(7) состоит из отдельных страниц, посвященных отдельным командам, специальным файлам устройств, конфигурационным файлам, системным и библиотечным вызовам и другим понятиям, которые сгруппированы по восьми (обычно, но есть исключения из правил) секциям.
Каждая секция имеет заголовочную страницу Intro, описывающую назначение самой секции.
Секции справочной системы man(1)
john@ubuntu:~$ whatis intro
intro (2) — Introduction to system calls
intro (7) — Introduction to overview, conventions, and miscellany …
intro (8) — Introduction to administration and privileged commands
intro (3) — Introduction to library functions
intro (1) — Introduction to user commands
intro (6) — Introduction to games
intro (4) — Introduction to special files
intro (5) — Introduction to file formats
john@ubuntu:~$ whatis whatis
whatis (1) — показывает описания справочн…
john@ubuntu:~$ whatis apropos
apropos (1) — поиск в именах справочных стр…
finn@ubuntu:~$ whatis man
man (1) — доступ к справочным страницам
man (7) — macros to format man pages
Естественным образом справочная система описывает сама себя, поэтому известнейшей «мантрой» в операционной системе является man man, т. е. запрос страницы руководства, посвященной самой команде man(1). Сами страницы руководства написаны на языке разметки текста roff (cистема подготовки текстов, доставшаяся в наследство от классической UNIX) и размещаются в сжатых gz-файлах «секционных» подкаталогов man1, man2, …, man8 каталога /usr/share/man. Страницы руководства частично поставляются переведенными на различные национальные языки, отличные от английского.
Формат страниц справочной системы man
john@ubuntu:~$ man -w man
/usr/share/man/ru/manl/man.1.gz
john@ubuntu:~$ file /usr/share/man/ru/man1/man.1.gz
/usr/share/man/ru/manl/man.1.gz : gzip compressed data, from Unix, max compression
john@ubuntu:~$ file -z /usr/share/man/ru/man1/man.1.gz
/usr/share/man/ru/man1/man.1.gz: troff or preprocessor input, UTF-8 Unicode text (gzip compressed data, from Unix, max compression)
john@ubuntu:~$ whatis file
file (1) — determine file type
Команда man(1), таким образом, ответственна за поиск указанной пользователем страницы, распаковку ее сжатого файла при помощи распаковщика gzip(1), форматирования при помощи процессора troff(1) и (по умолчанию) вывод результата на терминал при помощи постраничного листателя less(1).
Именно процессор troff умеет посредством управляющих последовательностей нужного терминала раскрашивать вывод страниц руководства правильным образом, а листатель less прокручивать подготовленную справку вперед и назад.
Использование языка разметки позволяет форматировать страницу одинаково удобно для просмотра на разных терминалах с различным количеством столбцов, которые учитывает troff, и разным количеством строк, учитываемым less.
Так, например, результат одинаково хорош и на псевдотерминале в окне эмулятора терминала xtern или gnome-terminal развернутого в любой размер, и на виртуальном терминале консоли с загруженным шрифтом любого размера.
Более того, использование универсального языка разметки,и соответствующий «драйвер» troff позволяет преобразовывать страницы руководства в самые разные виды. Например, в «принтерный» PostScript или PCL пригодный для печати на принтере с высокой разрешающей способностью, или в HTML (При наличии установленного пакета groff) для просмотра в html-браузере.
Форматирование справочных страниц руководства для печати и для html-браузера
john@ubuntu:~$ man -t man > man.print.1
john@ubuntu:~$ file man.1.print
man.print. 1: PostScript document text conforming DSC level 3.0
john@ubuntu:~$ man -Tlj4 man > man.print.2
john@ubuntu:~$ file man.print.2
man.print.2: HP PCL printer data
john@ubuntu:~$ man -Thtml man > man.htnl
john@ubuntu:~$ file man.html
man.html: HTML document, ASCII text, with very long lines
При просмотре страниц руководства на терминале навигация по изображаемой справочной странице производится так, как предусмотрено используемым листателем, которым по умолчанию в большинстве случаев будет less(1), приемник классического more(1).
Одним из самых полезных навигационных действий в справочных системах является поиск регулярных выражений. Собственно страницы руководства разбиты на разделы, заголовки которых размещаются в начале строк и записываются в верхнем регистре.
Например,
SYNOPSIS — краткий обзор,
EXAMPLES — примеры,
FILES — используемые программой (конфигурационные) файлы,
ENVIRONMENT — переменные окружения и пр.
Поэтому для перемещения к разделу TOPIC очень удобно использовать символ поиска / и выражение ^ТОРIС, что буквально означает: найти в начале строки — ^ слово — ТОРIС.
Клавиши навигации листателей страниц
Навигационное действие | Управляющий символ или клавиша less | Управляющий символ или клавиша more | Управляющий символ или клавиша info |
Выход | Q или q | Q или q или ^С | Q или q или ^С |
Справка содержимое этой таблицы | h или H | h или ? | h или ? или ^H |
Вниз одну строку | CR или j или ↓ | CR | ↓ или ^N |
Вверх одну строку | ^P или k или ↑ | ↑ или ^N | |
Вниз один экран | f или Space или PgDn | f или Space | Space или PgDn |
Вверх один экран | b или PgUp | b | Del или PgDn |
Поиск регулярных выражений вперед | / | / | / или S |
Поиск назад | ? | ||
Повторить поиск | n | n | } |
Повторить поиск в обратном направлении | N | { | |
В конец страницы (ноды) | G или > или End | e или End или Esc> | |
В начало страницы (ноды) | g или < или Home | b или Home или Esc< | |
Следующая нода | не применимо | не применимо | ] |
Предыдущая нода | не применимо | не применимо | [ |
Справочная система GNU
Еще одной системой документации является система W:[GNU texinfo]. В отличие от справочника man, выступающего по сути кратким руководством по командам, их опциям и аргументам, справочник info представляет собой развернутое руководство с примерами и объяснениями.
Справочная система состоит из предварительно подготовленных (гипертекстовых страниц, размещенных в сжатых файлах каталога /usr/share/info, оглавлением которым служит так называемый «каталог» документации. Каждая страница структурирована при помощи иерархически упорядоченных, так называемых «нод», аналогов книжных разделов/пбдразделов/глав/секций.
Язык разметки texinfo, как и язык roff в системе страниц руководства, позволяет подготавливать разные представления справочной информации из единого источника при помощи специальных инструментов (При наличии установленного пакета texinfo и исходных файлов документации .texi), но в отличие от страниц руководства man только при наличии исходных файлов документации.
Встроенная справка командного интерпретатора
Как было указано ранее, команды интерпретатору могут приводить к вызову внешних программ операционной системы или исполняться непосредственно интерпретатором, будучи встроенными в него.
Внешние программы зачастую документируются отдельными страницами руководства man или отдельными справочными страницами info, тогда как встроенные команды являются частью интерпретатора и естественным образом описываются все вместе на справочной странице, посвященной интерпретатору.
Справка по встроенным командам интерпретатора
john@ubuntu:~$ type cd
cd встроена в оболочку
john@ubuntu:~$ man cd
Нет справочной страницы для cd
john@ubuntu:~$ whatis cd
cd: ничего подходящего не найдено.
john@ubuntu:~$ man bash
SHELL BUILTIN COMMANDS
Unless otherwise noted, each builtin connand documented in this section as accepting options preceded by — accepts —to signify the end of the options. The true, false, and test builtins do not accept options and do not treat — specially. The exit, logout, break, continue, let,
cd C-L|[-P [-e]]] [dir]
Change the current directory to dir. The variable HOME is the default dir. The variable CDPATH defines the search path for the directory containing dir. Alternative directory names in CDPATH are separated by a colon (:). A null directory name in CDPATH is the same as the current directory, i.e., «.’. If
Однако обращаться каждой раз к весьма внушительной справке по командному интерпретатору не совсем удобно, поэтому встроенная в командный интерпретатор команда help позволяет получить краткую справку по встроенным командам интерпретатора.
Встроенная справка командного интерпретатора
john@ubuntu:~$ help -d help
help — Display information about builtin commands.
john@ubuntu:~$ help -d cd
cd — Change the shell working directory.
john@ubuntu:~$ help cd
cd: cd [-L|[-P [-e]]] [каталог]
Change the shell working directory.
Change the current directory to DIR. The default DIR is the value of the HOME shell variable.
The variable QDPATH defines the search path for the directory containing DIR. Alternative directory names in CDPATH are separated by a colon (:).