Existe maneira de ver o documento `man` apenas para a opção especificada de um comando


24

Se eu quiser saber o significado de wget -b, vejo o manual por man wgete procure a -bopção.

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

Eu quero obter o resultado por um comando como man wget -b. (Claro que isso não funciona.)

Existe uma maneira semelhante de tornar isso possível?


wget -h | grep '\ -b'
Faheem Mitha

Respostas:


5

Você pode redirecionar a página de manual awke extender a peça:

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.

Essa parte é tudo o que está entre uma -be uma linha vazia.


11
{print}pode ser omitido
Costas

Obrigado, tentei usar com GNU Awk 4.0.1(Ubuntu), GNU Awk 3.1.7(CentOS)e awk version 20070501(OS X), mas funciona apenas com 4.0.1.
ironsand

11
.*$pode ser omitido também
Walter Tross

22

Se você usa lesscomo pager para homem, pode tentar

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

Onde

  1. +para executar a próxima operação após a lessabertura
  2. / comando para iniciar a pesquisa
  3. ^\s+-bregexp para corresponder a -bpartir do início da linha

Então, se você quiser, pode organizar a função apropriada para shell

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

e adicione-o, ~/.bashrcpor exemplo.


Isso não funciona para mim, acho que porque ele não vai fazer várias linhas de correspondência
rb612

14

Quando você executa, man commandpode pressionar /e inserir o texto sem formatação a ser pesquisado. Por exemplo, digite /-be ele irá para a primeira instância do -btexto.


@drewbenn Oh, que bom. Eu sempre apenas pressionei /+ enter para continuar.
macia

10

Eu escrevi um pequeno script para fazer isso chamado ele , por exemplo he wget -b.

A estratégia básica é: procure a opção (por exemplo -b) como a primeira palavra em uma linha e imprima até o próximo cabeçalho ou a próxima linha com o recuo correspondente.

Se você não pode usar isso, pode obter algo semelhante usando o básico sed, por exemplo

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

Além disso, seu script desc é muito útil.
quer

Apenas decidi renomeá-lo para he, como em short help, mais he/ man.
Mikel

Atualizado para trabalhar com o novo exemplo wget -b,.
Mikel

3

Eu uso o seguinte script que se conecta ao ExpliqueShell.com . Copiei do reddit há algum tempo:

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

Eu o nomeei rmane coloquei no meu $PATH. Uso para 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

Você pode ajustar um pouco esse script para não mostrar lixo no começo.

EDIT: Eu peguei a partir daqui . Graças ao autor!


3
É importante observar que isso potencialmente documenta uma implementação / versão diferente dos comandos daqueles instalados na máquina.
Stéphane Chazelas

Além disso, não há como escapar e fazer citações ruins no código.
L0b0

Sim, eu me perguntava se eu deveria enfatizar isso. No entanto, se uma opção específica significa algo em um sabor do programa, geralmente significa o mesmo em outro sabor. O que é mais frequente é que faltam algumas opções. Novamente, esta é apenas a minha experiência.
Arkadiusz Drabczyk

@ l0b0: Eu não escrevi este código, eu não iria usar o bash em primeiro lugar
Arkadiusz Drabczyk

0

Como alternativa, se você grepé o GNU grep, você pode usá-lo da seguinte maneira:

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

Em que -A(uma extensão GNU) é para imprimir o número de linhas após as linhas correspondentes (aqui 3). você pode usar o número apropriado para obter uma descrição completa.

Exemplo:

$ 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

Para uma experiência em linha de comando, use a versão @Costas.

Para uma versão leve, manuse a mesma interface de texto que less. Isso significa que você pode usar os mesmos comandos que 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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.