有没有办法只为命令的指定选项查看`man`文档


24

如果我想知道的含义wget -b,请参阅的手册man wget,然后搜索该-b选项。

   -b
   --background
       Go to background immediately after startup.  If no output file is specified via the -o, output is redirected to wget-log.

我想通过类似的命令获得结果man wget -b。(当然,这是行不通的。)

有没有类似的方法可以实现?


wget -h | grep的'\ -B'
Faheem米撒

Answers:


5

您可以将联机帮助页重定向到awk该部分并进行扩展:

man wget | awk '/^ *-b *.*$/,/^$/{print}'
       -b
       --background
           Go to background immediately after startup.  If no output file is specified via the -o, output is redirected to wget-log.

那部分是介于-b和空行之间的所有内容。


1
{print}可以省略
Costas 2015年

谢谢,我试着用用GNU Awk 4.0.1(Ubuntu)GNU Awk 3.1.7(CentOS)awk version 20070501(OS X),但只工作4.0.1
ironsand 2015年

1
.*$也可以省略
Walter Tross 2015年

22

如果您less用作传呼机,可以尝试

LESS="+/^\s+-b" man wget

哪里

  1. +less打开后执行下一个操作的符号
  2. / 开始搜索的命令
  3. ^\s+-b正则表达式-b从行首开始匹配

因此,如果您愿意,可以为shell安排适当的功能

function rman {
#USAGE: rman programm.name option.to.search (with "-" symbol)
LESS="+/^\s+$2" man "$1"
}

并将其添加到~/.bashrc例如。


我认为这对我不起作用,因为它不会进行多行匹配
rb612 '18

14

运行时,man command您可以按/,然后输入要搜索的纯文本。例如,键入/-b,它将跳到-b文本中的第一个实例。


@drewbenn哦,太好了。我一直只是按/+输入继续。
蓬松的

10

为此,我写了一个小脚本叫,例如he wget -b

基本策略是:搜索选项(例如-b)作为一行的第一个单词,然后打印直到下一个标题或具有匹配缩进的下一行。

如果您不能使用它,则可以使用basic获得类似的东西sed,例如

man wget | sed -ne '/^  *-b/,/^$/p'

另外,您的desc脚本也很有帮助。
潘迪

刚刚决定将其重命名heshort helpplus he/ man
Mikel 2014年

已更新,可用于新示例wget -b
Mikel

3

我使用以下脚本连接到explainshell.com。我前一段时间从reddit复制了它:

#!/bin/bash
cmd=$1
shift
args=$*
args=${args/ /+}
w3m -dump "http://explainshell.com/explain/$cmd?args=$args"

我给它起了名字,rman然后放进了它$PATH。用途wget -b

$ rman wget -b    
[logo]

  • about
  •
  • [                    ]

wget(1) -b

The non-interactive network downloader

-b
--background
    Go to background immediately after startup.  If no output file is specified via the -o, output is
    redirected to wget-log.

source manpages: wget

您可以对此脚本进行一些调整,以免在一开始就显示垃圾。

编辑:我从这里得到的。感谢作者!


3
重要的是要注意,这可能记录了与计算机上安装的命令不同的命令实现/版本。
斯特凡Chazelas

另外,代码中没有转义和错误的引用。
l0b0 2015年

是的,我想知道是否应该强调这一点。但是,如果特定选项在程序的一种风格中表示某种含义,则通常在另一种风格中表示相同含义。更常见的是缺少某些选项。同样,这只是我的经验。
2015年

@ l0b0:我没有编写此代码,我最初不会使用bash
Arkadiusz Drabczyk 2015年

0

或者,如果您grep是GNU grep,则可以按以下方式使用它:

man wget | grep -EA3 '^ *-b'

其中-A(GNU扩展名)用于匹配行(此处3)后的打印行数。您可以使用适当的数字进行完整描述。

例:

$ man wget | grep -EA3 '^ *-b'
       -b
       --background
           Go to background immediately after startup.  If no output file is specified via the -o, output is
           redirected to wget-log.

$ man grep | grep -EA3 '^ *-A'
       -A NUM, --after-context=NUM
              Print NUM lines of trailing context after matching lines.  Places a line containing a  group  separator
              (--)  between  contiguous groups of matches.  With the -o or --only-matching option, this has no effect
              and a warning is given.

0

要获得命令行体验,请使用@Costas版本。

对于轻量级版本,请man使用与相同的文本界面less。这意味着您可以使用与相同的命令less

# open manual to wget
man wget

# search for -b
/-b

# use "n" to navigate to next version of -b until you find what you want
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.