Est-il possible de voir le document `man` uniquement pour l'option spécifiée d'une commande

24

Si je veux connaître la signification de wget -b, je vois le manuel par man wget, puis recherchez l' -boption.

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

Je veux obtenir le résultat par une commande comme man wget -b. (Bien sûr, cela ne fonctionne pas.)

Existe-t-il une manière similaire de rendre cela possible?

fer à repasser
la source
wget -h | grep '\ -b'
Faheem Mitha

Réponses:

5

Vous pouvez rediriger la page de awkmanuel et extraire la partie:

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.

Cette partie est tout ce qui se trouve entre une -bet une ligne vide.

le chaos
la source
1
{print}peut être omis
Costas
Merci, j'ai essayé d'utiliser avec GNU Awk 4.0.1(Ubuntu), GNU Awk 3.1.7(CentOS)et awk version 20070501(OS X), mais ne fonctionne qu'avec 4.0.1.
ironsand
1
.*$peut également être omis
Walter Tross
22

Si vous utilisez lesscomme téléavertisseur pour homme, vous pouvez essayer

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

  1. +symbole pour exécuter l'opération suivante après lessouverture
  2. / commande pour lancer la recherche
  3. ^\s+-bexpression régulière pour correspondre -bdepuis le début de la ligne

Donc, si vous le souhaitez, vous pouvez organiser la fonction appropriée pour shell

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

et l'ajouter ~/.bashrcpar exemple.

Costas
la source
Cela ne fonctionne pas pour moi, je pense parce qu'il ne fera pas de correspondance multiligne
rb612
14

Lorsque vous exécutez, man commandvous pouvez appuyer sur /puis saisir le texte brut à rechercher. Par exemple, tapez /-bet il passera à la première instance de -bdans le texte.

duveteux
la source
@drewbenn Oh, bien. Je viens toujours d'appuyer sur /+ Entrée pour continuer.
moelleux
10

J'ai écrit un petit script pour ce faire appelé lui , par exemple he wget -b.

La stratégie de base est la suivante: recherchez l'option (par exemple -b) comme premier mot d'une ligne, puis imprimez jusqu'à l'en-tête suivant ou la ligne suivante avec un retrait correspondant.

Si vous ne pouvez pas utiliser cela, vous pouvez obtenir quelque chose de similaire en utilisant de base sed, par exemple

man wget | sed -ne '/^  *-b/,/^$/p'
Mikel
la source
Votre script desc est également très utile.
Pandya
Je viens de décider de le renommer he, comme dans short help, plus he/ man.
Mikel
Mis à jour pour fonctionner avec le nouvel exemple wget -b,.
Mikel
3

J'utilise le script suivant qui se connecte à explainshell.com . Je l'ai copié depuis reddit il y a quelque temps:

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

Je l'ai nommé rmanet l' ai mis dans mon $PATH. Utilisation pour 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

Vous pouvez modifier un peu ce script pour ne pas afficher les ordures au début.

EDIT: Je l'ai eu d' ici . Merci à l'auteur!

Arkadiusz Drabczyk
la source
3
Il est important de noter que cela documente potentiellement une implémentation / version différente des commandes de celles installées sur la machine.
Stéphane Chazelas
De plus, il n'y a pas d'échappatoire et de mauvaise citation dans le code.
l0b0
Oui, je me demandais si je devais souligner cela. Cependant, si une option particulière signifie quelque chose dans une saveur du programme, cela signifie généralement la même chose dans une autre saveur. Le plus souvent, il manque certaines options. Encore une fois, c'est juste mon expérience.
Arkadiusz Drabczyk du
@ l0b0: Je n'ai pas écrit ce code, je n'utiliserais pas bash en premier lieu
Arkadiusz Drabczyk
0

Alternativement, si vous êtes grepGNU grep, vous pouvez l'utiliser comme suit:

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

Dans lequel -A(une extension GNU) correspond au nombre de lignes à imprimer après les lignes correspondantes (ici 3). vous pouvez utiliser le numéro approprié pour une description complète.

Exemple:

$ 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
la source
0

Pour une expérience en ligne de commande, utilisez la version @Costas.

Pour une version légère, manutilise la même interface de texte que less. Cela signifie que vous pouvez utiliser les mêmes commandes 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
K3ARN3Y
la source