Почему существуют разные пути для команды в разделе «Синопсис» на странице человека?

Глядя на страницу man для grep я заметил, что в команде есть два разных пути. Означает ли это, что у меня есть несколько инструментов grep в моей системе? Строки синопсиса имеют один и тот же путь только для разных примеров использования одного и того же инструмента? Я использую OS X 10.10.5

 NAME grep - search a file for a pattern SYNOPSIS /usr/bin/grep [-bchilnsvw] limited-regular-expression [filename]... /usr/xpg4/bin/grep [-E | -F] [-c | -l | -q] [-bhinsvx] -e pattern_list... [-f pattern_file]... [file]... /usr/xpg4/bin/grep [-E | -F] [-c | -l | -q] [-bhinsvx] [-e pattern_list]... -f pattern_file... [file]... /usr/xpg4/bin/grep [-E | -F] [-c | -l | -q] [-bhinsvx] pattern [file]... DESCRIPTION The grep utility searches text files for a pattern and prints all lines that contain that pattern. It uses a com- pact non-deterministic algorithm. 

Следующий вопрос: откуда происходят страницы с людьми? Они генерируются динамически или являются частью статической установки?

2 Solutions collect form web for “Почему существуют разные пути для команды в разделе «Синопсис» на странице человека?”

Вы говорите, что находитесь на машине macOS, но руководство выглядит подозрительно, как руководство grep на машине Solaris . Вот руководство для grep на OSX 10.9 для сравнения .

В Solaris существует несколько утилит с несколькими реализациями, а grep – один из них. Те, что находятся в /usr/bin соответствуют XPG3, что является сокращением для «Руководство по переносимости X / Open, выпуск 3». Спецификация Single Unix основана на XPG4 (ссылка: статья Wikipedia X / Open )

Например, grep в /usr/bin не поддерживает расширенные регулярные выражения, а в /usr/xpg4/bin .

Если утилита имеет несколько строк синопсиса в своем руководстве, то обычно они описывают взаимоисключающие способы вызова инструмента.

Эти:

 /usr/xpg4/bin/grep [-E | -F] [-c | -l | -q] [-bhinsvx] -e pattern_list... [-f pattern_file]... [file]... /usr/xpg4/bin/grep [-E | -F] [-c | -l | -q] [-bhinsvx] [-e pattern_list]... -f pattern_file... [file]... 

.. показать, что вы можете использовать либо -e или -f (или оба), но вы должны использовать один из них.

Последний,

  /usr/xpg4/bin/grep [-E | -F] [-c | -l | -q] [-bhinsvx] pattern [file]... 

… показывает, что если вы используете ни -e или -f , тогда pattern должен быть указан в командной строке.

См. Также standards(5) по Solaris .


Руководства устанавливаются «статически», т.е. в виде отдельных файлов, которые команда man читает и отображает. Тем не менее, в зависимости от вашей системы некоторые из них могут быть исходными файлами groff или mandoc , в то время как другие могут быть предварительно отформатированы как текстовые файлы, иногда хранящиеся в каталоге для сиблинга, в неформатированные руководства, часто называемые чем-то вроде cat . Иногда они также могут быть сжаты. Прочтите руководство пользователя в вашей системе ( man man ), чтобы узнать, как там обрабатываются руководства.

Чаще всего руководства можно найти в /usr/share/man , /usr/local/share/man или в каком-либо таком местоположении.

Ручные страницы динамически отформатированы, но содержимое статично. Его конфигурация, включая расположение фактических предварительно отформатированных страниц руководства, обычно определяется в /etc/man.conf .

В соответствующей части моей машины MacOS:

 # Every automatically generated MANPATH includes these fields # MANPATH /usr/share/man MANPATH /usr/local/share/man MANPATH /usr/X11/man # # Uncomment if you want to include one of these by default # # MANPATH /opt/*/man # MANPATH /usr/lib/*/man # MANPATH /usr/share/*/man # MANPATH /usr/kerberos/man # # Set up PATH to MANPATH mapping # # If people ask for "man foo" and have "/dir/bin/foo" in their PATH # and the docs are found in "/dir/man", then no mapping is required. # # The below mappings are superfluous when the right hand side is # in the mandatory manpath already, but will keep man from statting # lots of other nearby files and directories. # MANPATH_MAP /bin /usr/share/man MANPATH_MAP /sbin /usr/share/man MANPATH_MAP /usr/bin /usr/share/man MANPATH_MAP /usr/sbin /usr/share/man MANPATH_MAP /usr/local/bin /usr/local/share/man MANPATH_MAP /usr/local/sbin /usr/local/share/man MANPATH_MAP /usr/X11/bin /usr/X11/man MANPATH_MAP /usr/bin/X11 /usr/X11/man MANPATH_MAP /usr/bin/mh /usr/share/man 

Итак, глядя в /usr/share/man/man1 , я вижу grep.1 который определяет содержание страницы руководства для grep(1) .

  • Настройка linux с достаточным swap-пространством для спящего режима
  • Как исправить проблему Grub, связанную с чистой установкой?
  • Ошибка загрузки загрузчика Fedora
  • Установщик Linux USB не видит мой внутренний накопитель SSD
  • Как установить «установить USB» с пользовательским Linux?
  • Установка Gentoo: не удается найти корневое устройство (загрузка LiveCD с HardDrive)
  • Ошибка после установки: нет такого устройства. спасение грибов
  • Какое устройство для установки загрузчика следует выбрать?
  • Как установить Fedora с новым ядром?
  • Возможно ли установить Fedora 25 без GUI с USB?
  • Как установить Debian с USB? (Использование полноразмерного изображения, а не netinstall)
  • Linux и Unix - лучшая ОС в мире.