Gibt es eine Möglichkeit, "man" -Dokument nur für die angegebene Option eines Befehls zu sehen

24

Wenn ich die Bedeutung von wissen will wget -b, sehe ich im Handbuch nach man wget, dann suche die -bOption.

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

Ich möchte das Ergebnis durch einen Befehl wie erhalten man wget -b. (Natürlich funktioniert das nicht.)

Gibt es eine ähnliche Möglichkeit, dies zu ermöglichen?

Eisen und Sand
quelle
wget -h | grep '\ -b'
Faheem Mitha

Antworten:

5

Sie können die Manpage umleiten awkund das Teil extrahieren:

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.

Dieser Teil ist alles, was sich zwischen einer -bund einer Leerzeile befindet.

Chaos
quelle
1
{print}kann weggelassen werden
Costas
Danke, habe ich versucht , mit zu verwenden GNU Awk 4.0.1(Ubuntu), GNU Awk 3.1.7(CentOS)und awk version 20070501(OS X), funktioniert aber nur mit 4.0.1.
Eisen und
1
.*$kann auch weggelassen werden
Walter Tross
22

Wenn Sie lessals Pager für den Menschen verwenden, können Sie versuchen

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

woher

  1. +Symbol zur Ausführung des nächsten Vorgangs nach dem lessÖffnen
  2. / Befehl zum Starten der Suche
  3. ^\s+-bregulärer Ausdruck, der -bvom Zeilenanfang an übereinstimmt

Wenn Sie möchten, können Sie die entsprechende Funktion für die Shell festlegen

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

und fügen Sie es ~/.bashrczum Beispiel in.

Costas
quelle
Das funktioniert bei mir nicht, ich denke, weil es keinen mehrzeiligen Abgleich gibt
rb612
14

Wenn Sie ausführen man command, können Sie drücken /und dann den zu suchenden Klartext eingeben. Geben Sie beispielsweise /-bFolgendes ein, um zur ersten Instanz von -bim Text zu springen .

flauschige
quelle
@ Drewbenn Oh, schön. Ich habe immer nur /+ Enter gedrückt , um fortzufahren.
Flauschige
10

Ich schrieb ein kleines Skript so genannt zu tun ihn , zum Beispiel he wget -b.

Die grundlegende Strategie lautet: Suchen Sie nach der Option (z. B. -b) als erstes Wort in einer Zeile und drucken Sie dann bis zur nächsten Überschrift oder zur nächsten Zeile mit passendem Einzug.

Wenn Sie das nicht verwenden können, können Sie mit basic etwas Ähnliches erreichen sed, z

man wget | sed -ne '/^  *-b/,/^$/p'
Mikel
quelle
Auch dein desc Skript ist sehr hilfreich.
Pandya
Ich habe gerade beschlossen, es in he, wie in short help, plus he/ umzubenennen man.
Mikel
Aktualisiert, um mit dem neuen Beispiel zu arbeiten wget -b.
Mikel
3

Ich verwende das folgende Skript, das eine Verbindung zu explainhell.com herstellt . Ich habe es vor einiger Zeit von reddit kopiert:

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

Ich nannte es rmanund steckte es in meine $PATH. Verwendung für 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

Sie können dieses Skript ein wenig optimieren, damit am Anfang kein Müll angezeigt wird.

EDIT: Ich habe es von hier bekommen . Danke an den Autor!

Arkadiusz Drabczyk
quelle
3
Es ist wichtig zu beachten, dass dies möglicherweise eine andere Implementierung / Version der Befehle dokumentiert als die auf dem Computer installierten.
Stéphane Chazelas
Es gibt auch kein Entkommen und kein falsches Zitieren im Code.
10.
Ja, ich habe mich gefragt, ob ich das unterstreichen soll. Wenn eine bestimmte Option jedoch etwas in einer Programmversion bedeutet, bedeutet dies normalerweise dasselbe in einer anderen Programmversion . Was häufiger vorkommt ist, dass einige Optionen fehlen. Auch dies ist nur meine Erfahrung.
Arkadiusz Drabczyk
@ l0b0: Ich habe diesen Code nicht geschrieben, ich würde Bash überhaupt nicht verwenden
Arkadiusz Drabczyk
0

Wenn es sich bei Ihrer grepum die GNU handelt grep, können Sie sie alternativ wie folgt verwenden:

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

In dem -A(eine GNU-Erweiterung) wird die Anzahl der Zeilen nach übereinstimmenden Zeilen gedruckt (hier 3). Sie können die entsprechende Nummer für die vollständige Beschreibung verwenden.

Beispiel:

$ 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.
Pandya
quelle
0

Verwenden Sie für eine Befehlszeilenerfahrung die @Costas-Version.

manVerwendet für eine Lightweight-Version dieselbe Textschnittstelle wie less. Das heißt, Sie können die gleichen Befehle wie verwenden 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
K3ARN3Y
quelle