grep 连字符选项命令的手册页

kar*_*rel 11 grep man options

当我搜索find匹配命令的手册页时,type它会返回很多我不想要的搜索结果。相反,我想用一个命令,它返回在搜索结果-type

该命令man find | grep -type不起作用。它返回:

grep: invalid option -- 't'
Run Code Online (Sandbox Code Playgroud)

Wil*_*ard 12

如果要对以连字符开头的模式进行 grep,请--在指定的模式之前使用。

man find | grep -- -type
Run Code Online (Sandbox Code Playgroud)

如果您需要更多信息,例如描述选项的整个部分,您可以尝试使用 Sed:

$ man find | sed -n '/-mindepth/,/^$/p'
   -mindepth levels
          Do  not apply any tests or actions at levels less than levels (a
          non-negative integer).  -mindepth  1  means  process  all  files
          except the command line arguments.
Run Code Online (Sandbox Code Playgroud)

但是,这不适用于您可能搜索的每个选项。例如:

$ man find | sed -n '/^[[:space:]]*-type/,/^$/p'
   -type c
          File is of type c:
Run Code Online (Sandbox Code Playgroud)

不是很有帮助。更糟糕的是,对于某些选项,您可能会误以为自己会阅读有关该选项的全文,而实际上并没有。例如,搜索-delete忽略了非常重要的警告包含作为第二该标题下段落。


我的建议是使用标准的调用manLESS环境变量设置。我在这个网站上的回答中经常使用它。

LESS='+/^[[:space:]]*-type' man find
Run Code Online (Sandbox Code Playgroud)

要了解有关其工作原理的更多信息,请参阅:

LESS='+/^[[:space:]]*LESS ' man less
LESS='+/\+cmd' man less
LESS='+/\/' man less
Run Code Online (Sandbox Code Playgroud)

如果您只想在手册页中以交互方式快速找到该选项,请学习使用less的搜索功能。另请参阅:

  • 顺便说一句,@Sundeep,您可能想尝试解析包含原始手册页信息和格式信息的底层 `troff` 文件,而不是 `man` 命令的文本输出。 (2认同)