Страница руководства ( сокращение от manual page ) — это форма документации программного обеспечения , обычно встречающаяся в Unix или Unix-подобных операционных системах . Рассматриваемые темы включают компьютерные программы (включая библиотечные и системные вызовы ), формальные стандарты и соглашения и даже абстрактные концепции. Пользователь может вызвать страницу руководства, введя man
команду .
По умолчанию man
обычно использует терминальную пейджерную программу, такую как more
или less
для отображения своих выходных данных.
Страницы руководства часто называют онлайн- или онлайн- формой документации по программному обеспечению [1] , хотя man
для работы команды не требуется доступ в Интернет, поскольку они появились еще во времена, когда печатные руководства были нормой.
До появления Unix (например, GCOS ) документация представляла собой печатные страницы, доступные пользователям (сотрудникам, студентам...) на месте, организованные в стальные папки, скрепленные вместе на одной монолитной стальной стойке для чтения, прикрепленной болтами к столу или стойке, при этом страницы были организованы для модульных обновлений информации, замен, исправлений и дополнений. [ необходима ссылка ]
В первые два года истории Unix никакой документации не существовало. [2] Руководство программиста Unix было впервые опубликовано 3 ноября 1971 года. Первые фактические страницы руководства были написаны Деннисом Ритчи и Кеном Томпсоном по настоянию [ требуется ссылка ] их менеджера Дуга Макилроя в 1971 году. Помимо страниц руководства, Руководство программиста также собрало набор коротких статей, некоторые из которых были учебными пособиями (например, по общему использованию Unix, языку программирования C и таким инструментам, как Yacc ), а другие — более подробными описаниями функций операционной системы. Печатная версия руководства изначально помещалась в одну папку, но с выходом PWB/UNIX и 7-го издания Research Unix она была разделена на два тома, причем печатные страницы руководства составляли Том 1. [3]
Более поздние версии документации имитировали краткость первых man-страниц. Ритчи добавил раздел «Как начать» во введение к третьему изданию , а Лоринда Черри предоставила карманный справочник «Purple Card» для шестого и седьмого изданий. [2] Версии программного обеспечения были названы в честь редакции руководства; седьмое издание Unix Programmer's Manual , например, поставлялось с 7-м изданием или версией 7 Unix. [4]
Для четвертого издания man-страницы были отформатированы с использованием пакета набора troff [2] и его набора -man
макросов (которые были полностью пересмотрены между шестым и седьмым изданиями Руководства [ 3] , но с тех пор не претерпели кардинальных изменений). В то время доступность онлайн-документации через систему man-страниц считалась большим достижением. По сей день практически каждое приложение командной строки Unix поставляется со страницей man, и многие пользователи Unix воспринимают отсутствие man-страниц в программе как признак низкого качества; действительно, некоторые проекты, такие как Debian , изо всех сил стараются писать man-страницы для программ, в которых их нет. Современные потомки 4.4BSD также распространяют man-страницы как одну из основных форм системной документации (заменив старые -man
макросы на новые -mdoc
).
В версии man-db команды man было скрыто пасхальное яйцо , из-за которого команда возвращала «gimme gimme gimme» при запуске в 00:30 (отсылка к песне группы ABBA Gimme! Gimme! Gimme! (A Man After Midnight)) . Оно было введено в 2011 году [5], но сначала ограничено [6] , а затем удалено в 2017 году [7] после того, как его наконец нашли. [8]
Формат man-страниц по умолчанию — troff , с макропакетом man (ориентированный на внешний вид) или mdoc (ориентированный на семантику). Это позволяет набирать man-страницы в PostScript , PDF и различных других форматах для просмотра или печати.
В некоторых системах Unix есть пакет для команды man2html , которая позволяет пользователям просматривать страницы man с помощью HTML-браузера. Системы с groff и man-db должны использовать вместо этого высококачественный собственный вывод HTML ( man --html ). Программа GNU Emacs WoMan (от "WithOut man") позволяет просматривать страницы man из редактора. [9]
В 2010 году OpenBSD отказалась от troff для форматирования man-страниц в пользу mandoc , специализированного компилятора/форматировщика для man-страниц с собственной поддержкой вывода в PostScript , HTML , XHTML и терминале. Он предназначен только для поддержки подмножества troff, используемого в man-страницах, в частности тех, которые используют макросы mdoc.
Довольно много веб-сайтов предлагают онлайн-доступ к страницам руководств различных Unix-подобных систем.
В феврале 2013 года сообщество BSD увидело запуск нового сервиса с открытым исходным кодом mdoc.su, который объединил и сократил доступ к скриптам man.cgi основных современных проектов BSD с помощью уникального детерминированного сервиса сокращения URL-адресов на основе nginx для страниц руководства *BSD. [10] [11] [12]
Для Linux был создан сервис man7.org, предоставляющий руководства, специфичные для данной системы. [13] Сервис ManKier предоставляет более широкий выбор и также интегрирует страницы TLDR. [14]
Чтобы прочитать страницу руководства по команде Unix, пользователь может ввести:
человек <имя_команды>
Традиционно страницы обозначаются с помощью нотации «имя(раздел)», например,
. Раздел ссылается на различные способы ссылки на тему — например, как на системный вызов, или как на команду или пакет оболочки (командной строки), или как на файл конфигурации пакета, или как на конструкцию кодирования/заголовок.Одно и то же имя страницы может встречаться в нескольких разделах руководства, например, когда совпадают имена системных вызовов , пользовательских команд или макропакетов . Примерами являются и , или и . Синтаксис доступа к нестандартному разделу руководства различается в разных реализациях man.
Например, в Solaris и illumos синтаксис для чтения
следующий:человек -с 3c printf
В производных Linux и BSD тот же вызов будет выглядеть так:
человек 3 printf
который ищет printf в разделе 3 страниц руководства.
Руководство обычно разделено на восемь пронумерованных разделов. Большинство современных систем (например, BSD , [15] macOS , Linux , [16] и Solaris 11.4) наследуют схему нумерации, используемую Research Unix . [17] [18] В то время как System V использует другой порядок: [19]
API-интерфейсы POSIX присутствуют в разделах 2 и 3, где раздел 2 содержит API, реализованные как системные вызовы, а раздел 3 содержит API, реализованные как библиотечные процедуры.
В некоторых системах доступны некоторые из следующих разделов:
Некоторые разделы подразделяются далее с помощью суффикса; например, в некоторых системах раздел 3C предназначен для вызовов библиотеки C, 3M — для математической библиотеки и т. д. Следствием этого является то, что раздел 8 (команды системного администрирования) иногда относят к подразделу 1M раздела основных команд. Некоторые суффиксы подразделов имеют общее значение для всех разделов:
(Раздел 3, как правило, является исключением из-за большого количества суффиксов для разных языков.)
Некоторые версии man
кэшируют форматированные версии последних нескольких просмотренных страниц. Одна из форм — это cat page , просто переданная пейджеру для отображения.
Все страницы руководства следуют общему макету, оптимизированному для представления на простом текстовом дисплее ASCII , возможно, без какой-либо формы выделения или управления шрифтом. Присутствующие разделы могут включать: [21] : СТРУКТУРА РУКОВОДСТВА
Другие разделы могут присутствовать, но они не стандартизированы на страницах руководства. Обычные примеры включают: OPTIONS, EXIT STATUS, RETURN VALUE, ENVIRONMENT, BUGS, FILES, AUTHOR, REPORTING BUGS, HISTORY и COPYRIGHT.
Страницы руководства могут быть написаны либо в старых man
макросах, либо в новых doc
макросах, либо в комбинации обоих ( mandoc
). [22] Набор man
макросов обеспечивает минимальные функции расширенного текста с директивами для строки заголовка, заголовков разделов, шрифтов (жирный, мелкий или курсив), абзацев и добавления/уменьшения отступов. [23] Новый mdoc
язык более семантический по своей природе и содержит специализированные макросы для большинства стандартных разделов, таких как имя программы, синопсис, имена функций и имена авторов. Эта информация может использоваться для реализации семантического поиска руководств такими программами, как mandoc . Хотя он также включает директивы для непосредственного управления стилем, ожидается, что специализированные макросы будут охватывать большинство вариантов использования. [21] Оба проекта mandoc и groff рассматривают mdoc
предпочтительный формат для новых документов. [24]
Хотя man-страницы, по мнению troff, представляют собой текст, набранный с использованием 10-точечного римского шрифта , это различие обычно не имеет смысла, поскольку man-страницы просматриваются в терминале (TTY), а не на бумаге. В результате макрос «мелкий шрифт» используется редко. [25] С другой стороны, жирный и курсивный текст поддерживаются терминалом через ECMA-48 , и groff's grotty
выдает их по запросу, когда обнаруживает поддерживающий терминал. Однако BSD mandoc поддерживает только жирный и подчеркнутый (в качестве замены курсиву) текст с помощью последовательности пишущей машинки backspace-then-overstrike, которую необходимо перевести в ECMA-48 с помощью less
. [26] [27]
Некоторые инструменты использовались для преобразования документов в менее надуманном формате в страницы руководства. Примерами служат GNU help2man
, который принимает --help
вывод и некоторое дополнительное содержимое для генерации страницы руководства. [28] Руководство было бы едва ли более полезным, чем указанный вывод, но для программ GNU это не проблема, поскольку texinfo является основной системой документирования. [29] Ряд инструментов, включая pandoc , ronn и md2man, поддерживают преобразование из Markdown в страницы руководства. Все эти инструменты выдают man
формат, поскольку Markdown недостаточно выразителен, чтобы соответствовать семантическому содержанию mdoc
. DocBook имеет встроенный конвертер man(7) — ужасного качества, по словам автора mandoc [30], который написал отдельный конвертер mdoc(7).
Страницы руководства обычно пишутся на английском языке, но переводы на другие языки могут быть доступны в системе. Известно, что GNU man-db
и mandoc man
ищут локализованные страницы руководства в подкаталогах. [31] [16] : Обзор [15]
Немногие альтернативы man
пользовались большой популярностью, за исключением, возможно, системы GNU Project " info
", ранней и простой гипертекстовой системы. Существует также сторонняя работа, известная как TLDR pages ( tldr
), которая предоставляет простые примеры для общих случаев использования, похожие на шпаргалку . [32]
Кроме того, некоторые приложения Unix GUI (особенно те, которые созданы с использованием сред разработки GNOME и KDE ) теперь предоставляют документацию для конечного пользователя в формате HTML и включают встроенные просмотрщики HTML, например, yelp
для чтения справки в приложении. HTML-система в Emacs также должна заменить texinfo. [33]
info
apropos
Параллельно с работой над man(7), mdoc(7) будет активно поддерживаться, а его использование продвигаться.