Где задокументированы команды, доступные в окне справочной страницы, и зависят ли эти команды от системы?

9

Пользуясь Linux годами, я вдруг обнаружил, что не знаю, как правильно использовать manкоманду. Хорошо известно, что можно печатать, qчтобы выйти из man-страницы, /искать и другие. Я не знаю, однако, где они задокументированы. Я пробовал man man man -a man info manи гуглил, без удачи.

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

Эти команды различны для разных ОС или для разных дистрибутивов Linux?

Вейцзюнь Чжоу
источник
Разве не просматривались страницы руководства less? (Он находится на моем дистрибутиве, по крайней мере, и hпоказывает сводку lessкоманд)
Rastapopoulos
@Rastapopoulos Разве не просматривались страницыless руководства ? Нет. Потому что lessэто не стандартная утилита.
Эндрю Хенле
Я полагаю, вы можете использовать readlink -f /usr/bin/pagerили, readlink -f $(which pager)чтобы узнать, какой пейджер у вас (по умолчанию /bin/less), чем manиспользуемый пейджер. Это может (должно) работа непосредственноman pager
Hastur
2
Если вы читаете свои справочные страницы с помощью moreили less, вы можете ввести hсправку. (или вы можете просто использовать emacs...)
Алекс Вонг
1
Если вы наберете ?или hв приглашении на пейджер, он должен дать вам список команд.
Бармар

Ответы:

11

Это действительно верно на странице руководства для manподзаголовка «Управление форматированным выводом» и повторяется позже в разделе «ОКРУЖАЮЩАЯ СРЕДА» для хорошей меры:

По умолчанию человек использует pager -s.
Страничное руководство объясняет , как существует иерархия переменных окружения и параметры командной строки ( PAGER, MANPAGERи --pager) для переопределения по умолчанию.

Вот как он читает в таких системах, как Debian Linux. В системах , таких как Oracle Linux, в отличие от этого , man-dbпакет был построен с другим значением по умолчанию, который, однако , до сих пор отражается прямо на странице руководства в одних и тех же местах:

По умолчанию человек использует less -s.

В man-dbпопытки пакета автоматически определить, во время компиляции, которые пейджер по умолчанию для сборки в команду, а также документ в справочной странице, из less, moreи pager.

В таких системах, как Debian Linux, pagerкоманда является частью системы «альтернатив» и может отображаться в одну из нескольких реальных команд:

jdebp% update-alternatives - список пейджеров
/ Бен / меньше
/ Бен / более
/ USR / бен / пг
/ USR / бен / w3m
jdebp%

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

человек пейджер

JdeBP
источник
5

Человек использует пейджер, чтобы показать содержание.

Точные данные зависят от того, какую версию manвы используете.

Для версии, используемой во многих системах:

  • Если опция -p pagerуказана, то используется этот пейджер.
  • В противном случае, если переменная окружения MANPAGERустановлена, она используется.
  • В противном случае, если PAGERустановлено, оно используется.
  • В противном случае по умолчанию используется /usr/bin/less

Если страница справочника в формате HTML, то BROWSERвместо MANPAGER/ используетсяPAGER

Debian использует man-dbразные значения по умолчанию.

Читайте man manдля деталей

Крысолов
источник
Спасибо за ваш ответ. Хотя ответ объясняет, как это manработает, я хотел бы спросить вас, можете ли вы сделать одолжение, чтобы указать мне правильное место, где это поведение задокументировано. Спасибо.
Вейцзюнь Чжоу
В моем man manвыводе (опять же, manверсия: 2.6.3) говорится, что «по умолчанию используется меньше -s», так что я ожидаю, что это зависит от версии и системы?
Вейцзюнь Чжоу
1
Это всего лишь пример стандартной философии Unix: маленькие и простые команды, которые работают с текстовыми потоками, выполняют только одно и делают это хорошо. Форматирование руководства и разбиение на страницы - это две вещи, поэтому они выполняются двумя разными инструментами. Таким образом, инструмент нумерации страниц можно повторно использовать для других задач, а не только для отображения страниц руководства.
Йорг Миттаг
2

Благодаря @Rastapopoulos, я найти строку , связанную с lessв man manна старой коробке Linux ( manверсия: 1.6f) в СРЕДЕ разделе, состояний,

БРАУЗЕР Имя браузера, используемого для отображения справочных страниц HTML. Если он не установлен, /usr/bin/lessиспользуется.

Однако на более новой коробке ( manверсия: 2.6.3) эта строка была заменена на

БРАУЗЕР Если задано значение $ BROWSER, его значением является список команд, разделенных двоеточиями, каждая из которых, в свою очередь, используется для запуска веб-браузера man --html. В каждой команде% s заменяется файлом? имя, содержащее вывод HTML из groff, %% заменяется одним знаком процента (%), а% c заменяется двоеточием (:).

Основываясь на этой информации, я считаю, что она отформатирована lessпо умолчанию (по крайней мере, для первого случая). Однако, даже если это так, это задокументировано таким образом, который мне не кажется понятным (или я manнеправильно выучил команду).

Вейцзюнь Чжоу
источник
2

Нет никакого реального способа полностью ответить на ваш вопрос в целом для различных операционных систем, так как manреализация на самом деле не полностью определена.

Стандарт POSIX, не относящийся к Linux, можно найти в документации по POSIXman :

ИМЯ

man - display system documentation

СИНТАКСИС

man [-k] name...

...

ПЕРЕМЕННЫЕ ОКРУЖАЮЩЕЙ СРЕДЫ

Следующие переменные среды должны влиять на выполнение man:

LANG

Укажите значение по умолчанию для переменных интернационализации, которые не установлены или имеют нулевое значение. (См. Переменные интернационализации XBD для определения приоритета переменных интернационализации, используемых для определения значений категорий локали.)

LC_ALL

Если задано непустое строковое значение, переопределите значения всех других переменных интернационализации.

LC_CTYPE

Определите локаль для интерпретации последовательностей байтов текстовых данных как символов (например, однобайтовых в отличие от многобайтовых символов в аргументах и ​​в итоговой базе данных). Значение LC_CTYPE не должно влиять на формат информации, записанной об операндах имени.

LC_MESSAGES

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

NLSPATH

Определите местоположение каталогов сообщений для обработки LC_MESSAGES.

ПЕЙДЖЕР

Определите команду фильтрации вывода для записи вывода в терминал. Любая строка, допустимая в качестве операнда command_string для команды, должна быть действительной. Если стандартный вывод является оконечным устройством, вывод справочной страницы должен передаваться через команду. Если переменная PAGER равна нулю или не установлена, команда должна быть либо одной, либо другой утилитой paginator, описанной в системной документации.sh-cmore

Обратите внимание на раздел RATIONALE, описывающий, почему manон не указан полностью:

ОБОСНОВАНИЕ

Признается, что полезность man имеет минимальную полезность, как указано. Мнение разработчиков стандарта было сильно разделено относительно того, сколько или сколько информации человек должен предоставить. Они считали, однако, что предоставление какого-либо портативного способа доступа к документации поможет мобильности пользователей. Аргументы против более полной спецификации были:

  • Большое количество документации не должно требоваться в системе, в которой нет свободного места на диске.

  • Текущая ручная система не предоставляет информацию таким образом, который значительно облегчает переносимость пользователем.

  • «Лучшая система помощи» в настоящее время является областью, в которой поставщики считают, что они могут повысить ценность своих реализаций POSIX.

Опция -f была рассмотрена, но из-за различий в реализации она не была включена в этот том POSIX.1-2008.

Описание было изменено, чтобы быть более точным в отношении того, что должно отображаться для утилиты. Разработчики стандарта сочли недостаточным отображение только синопсиса без краткого описания того, что делает каждый параметр и операнд.

Запись «target», которая будет включена в базу данных, может быть похожа на заголовок раздела (без числового префикса) из этого тома POSIX.1-2008 для каждой утилиты. Эти названия аналогичны тем, которые используются в исторических системах для этой цели.

См. Mailx для объяснения относительно стандартного paginator.

Предупреждение в описании LC_CTYPE было добавлено, поскольку не требуется, чтобы реализация предоставляла справочные страницы для всех своих поддерживаемых локалей в каждой системе; изменение LC_CTYPE не обязательно переводит справочную страницу на другой язык. Это эквивалентно текущему состоянию LC_MESSAGES в сообщениях, зависящих от локали POSIX.1-2008, пока не требуется.

Историческая переменная MANPATH не включена в POSIX, потому что не делается никаких попыток указать соглашения об именах для файлов справочной страницы и даже не предписывать, что они являются файлами вообще. В некоторых реализациях это может быть настоящая база данных, гипертекстовый файл или даже фиксированные строки в исполняемом файле man. Разработчики стандартов считали, что переносимость справочных страниц выходит за рамки их работы. Тем не менее, пользователи должны знать, что MANPATH реализован в ряде исторических систем и что он может использоваться для настройки шаблона поиска для справочных страниц из различных категорий (утилиты, функции, форматы файлов и т. Д.), Когда системный администратор показывает расположение и условные обозначения для справочных страниц в системе.

...

Обсуждение обоснования paginator со страницы mailx :

Параметр paginator, выбранный, когда PAGER равен нулю или не задан, частично не указан, чтобы историческая практика System V использовала pg по умолчанию. Обход функции пагинации, такой как объявление о том, что cat является пагинатором, не соответствует предполагаемому значению этого описания. Однако любой «переносимый пользователь» должен был бы явно установить PAGER, чтобы получить его или ее предпочтительный paginator во всех системах. Выбор paginator был сделан частично неопределенным, в отличие от выбора редактора VISUAL (обязательным для vi), потому что большинство исторических пейджеров следуют общей теме пользовательского ввода, тогда как редакторы существенно отличаются.

Эндрю Хенле
источник