C'è modo di vedere il documento `man` solo per l'opzione specificata di un comando


24

Se voglio conoscere il significato di wget -b, vedo il manuale di man wget, quindi cerco l' -bopzione.

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

Voglio ottenere il risultato con un comando simile man wget -b. (Naturalmente questo non funziona.)

Esiste un modo simile per renderlo possibile?


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

Risposte:


5

È possibile reindirizzare la manpage awked estendere la parte:

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.

Quella parte è tutto ciò che si trova tra una -be una linea vuota.


1
{print}può essere omesso
— Costas il

Grazie, ho provato a usare con GNU Awk 4.0.1(Ubuntu), GNU Awk 3.1.7(CentOS)e awk version 20070501(OS X), ma funziona solo con 4.0.1.
— Feronsand

1
.*$può anche essere omesso
— Walter Tross,

22

Se usi lesscome cercapersone per uomo puoi provare

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

dove

  1. +simbolo per eseguire l'operazione successiva dopo l' lessapertura
  2. / comando per iniziare la ricerca
  3. ^\s+-bregexp per abbinare -bdall'inizio della riga

Quindi, se ti piace, puoi organizzare la funzione appropriata per la shell

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

e aggiungilo ~/.bashrcad esempio.


Questo non funziona per me, penso perché non farà corrispondenze multilinea
— rb612

14

Quando si esegue man commandè possibile premere /e quindi immettere il testo normale da cercare. Ad esempio, digitare /-be passerà alla prima istanza di -bnel testo.


@drewbenn Oh, bello. Ho sempre premuto /+ invio per continuare.
— soffice

10

Ho scritto una piccola sceneggiatura per farlo chiamata lui , ad es he wget -b.

La strategia di base è: cercare l'opzione (ad es. -b) Come prima parola su una riga, quindi stampare fino all'intestazione successiva o alla riga successiva con rientro corrispondente.

Se non puoi usarlo, puoi ottenere qualcosa di simile usando di base sed, ad es

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

Anche il tuo script desc è molto utile.
— Pandya,

Ho appena deciso di rinominarlo in he, come in short help, più he/ man.
— Mikel,

Aggiornato per funzionare con il nuovo esempio wget -b,.
— Mikel,

3

Uso il seguente script che si collega a spiegahell.com . L'ho copiato da reddit qualche tempo fa:

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

L'ho chiamato rmane l' ho inserito nel mio $PATH. Utilizzo per 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

Puoi modificare un po 'questo script per non mostrare la spazzatura all'inizio.

EDIT: L'ho preso da qui . Grazie all'autore!


3
È importante notare che questo potenzialmente documenta un'implementazione / versione diversa dei comandi da quelli installati sulla macchina.
— Stéphane Chazelas,

Inoltre, nel codice non ci sono escape e quotazioni errate.
— l0b0,

Sì, mi chiedevo se avrei dovuto enfatizzarlo. Tuttavia, se una particolare opzione significa qualcosa in un sapore del programma, di solito significa lo stesso in un altro sapore. Ciò che è più spesso è che mancano alcune opzioni. Ancora una volta, questa è solo la mia esperienza.
— Arkadiusz Drabczyk,

@ l0b0: non ho scritto questo codice, non
— userei

0

In alternativa, se la tua grepè la GNU grep, puoi usarla come segue:

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

In quale -A(un'estensione GNU) è per stampare il numero di righe dopo aver abbinato le righe (qui 3). puoi utilizzare il numero appropriato per la descrizione completa.

Esempio:

$ 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

Per un'esperienza da riga di comando, utilizzare la versione @Costas.

Per una versione leggera, manutilizza la stessa interfaccia di testo di less. Questo significa che puoi usare gli stessi comandi di 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.