为什么手册页的概要部分中的命令有不同的路径?

She*_*lus 4 grep man system-installation

查看手册页,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.
Run Code Online (Sandbox Code Playgroud)

一个后续问题:手册页来自哪里?它们是动态生成的还是静态安装的一部分?

Kus*_*nda 5

你说你在 macOS 机器上,但手册看起来很像grepSolaris 机器上手册这是grepOSX 10.9 上的手册进行比较

在 Solaris 上,有多个具有多种实现的实用程序,它grep就是其中之一。中的那些/usr/bin遵循 XPG3,它是“X/Open Portability Guide, Issue 3”的缩写。单一 Unix 规范基于 XPG4(参考:维基百科 X/Open 文章

例如,XPG3 grepin/usr/bin不支持扩展正则表达式,而 XPG4 grepin 支持/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]...
Run Code Online (Sandbox Code Playgroud)

.. 表明您可以使用其中之一-e-f(或两者),但您必须使用其中之一。

最后一个,

 /usr/xpg4/bin/grep [-E | -F] [-c | -l | -q] [-bhinsvx] pattern
      [file]...
Run Code Online (Sandbox Code Playgroud)

... 表明如果您既不使用-e也不使用-f,则pattern需要在命令行上指定。

另请参见standards(5)有关 Solaris 的信息


手册是“静态”安装的,即作为man命令读取和显示的单独文件。但是,根据您的系统,其中一些可能是groffmandoc源文件,而另一些可能是预先格式化为文本文件,有时存储在未格式化手册的同级目录中,通常称为cat. 它们有时也可能被压缩。阅读man您系统上的手册 ( man man) 以了解在那里如何处理手册。

大多数情况下,手册中可以找到/usr/share/man/usr/local/share/man或者一些这样的位置。