マニュアルページの概要セクションのコマンドのパスが異なるのはなぜですか?

マニュアルページの概要セクションのコマンドのパスが異なるのはなぜですか?

マニュアルページを見ると、このコマンドgrepには2つの異なるパスがあることがわかりました。これは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.

次の質問:マニュアルページはどこから来ましたか?動的に生成されますか、それとも静的インストールの一部ですか?

答え1

macOSコンピュータを使用していると言っていますが、マニュアルが疑わしいです。grepSolaris システムマニュアルgrep比較のためのOSX 10.9マニュアルは次のとおりです。

Solarisにはいくつかの実装を備えたいくつかのユーティリティがあり、これがgrepそのうちの1つです。内容は/usr/bin「X/Open Portability Guide, Issue 3」の略語であるXPG3に従います。 Single Unix仕様はXPG4に基づいています(参照:WikipediaX/記事を開く)

grepたとえば、XPG3は/usr/bin拡張正規表現をサポートしていませんが、XPG4grep/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]...

...は、nor -enorを使用しない-f場合はpatternコマンドラインで指定する必要があることを示します。

また、見ることができますstandards(5)ソラリスから


マニュアルは「静的に」インストールされます。つまり、manコマンドで読み取られ、表示される別々のファイルとしてインストールされます。ただし、システムによっては、これらのいくつかはgroffソースmandocファイルである可能性があり、他のものはテキストファイルとして事前にフォーマットされている場合がありますcatmanシステムのマニュアル()を読んでman man処理方法を学びます。

/usr/share/manほとんどの場合、ドキュメントは、、、/usr/local/share/manまたは同様の場所にあります。

答え2

マニュアルページの形式は動的ですが、内容は静的です。実際に事前フォーマットされたマニュアルページの場所を含む構成は通常/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.1grep(1)

関連情報