マニュアルページを見ると、このコマンド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コンピュータを使用していると言っていますが、マニュアルが疑わしいです。grep
Solaris システムマニュアル。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 -e
norを使用しない-f
場合はpattern
コマンドラインで指定する必要があることを示します。
また、見ることができますstandards(5)
ソラリスから。
マニュアルは「静的に」インストールされます。つまり、man
コマンドで読み取られ、表示される別々のファイルとしてインストールされます。ただし、システムによっては、これらのいくつかはgroff
ソースmandoc
ファイルである可能性があり、他のものはテキストファイルとして事前にフォーマットされている場合がありますcat
。man
システムのマニュアル()を読んで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.1
grep(1)