Czy istnieje sposób, aby zobaczyć dokument `man` tylko dla określonej opcji polecenia

24

Jeśli chcę poznać znaczenie wget -b, widzę instrukcję według man wget, a następnie wyszukaj -bopcję.

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

Chcę uzyskać wynik za pomocą polecenia typu man wget -b. (Oczywiście, że to nie działa.)

Czy istnieje podobny sposób, aby to umożliwić?

żelazko piaskowe
źródło
wget -h | grep '\ -b'
Faheem Mitha

Odpowiedzi:

5

Możesz przekierować stronę man do awki wyciągnąć część:

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.

Ta część to wszystko, co jest między -ba pustą linią.

chaos
źródło
1
{print}można pominąć
Costas
Dzięki, starałem się używać z GNU Awk 4.0.1(Ubuntu), GNU Awk 3.1.7(CentOS)a awk version 20070501(OS X), ale działa tylko z 4.0.1.
ironsand
1
.*$można też pominąć
Walter Tross
22

Jeśli używasz lessjako pager dla człowieka, możesz spróbować

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

gdzie

  1. +symbol, aby wykonać następną operację po lessotwarciu
  2. / polecenie, aby rozpocząć wyszukiwanie
  3. ^\s+-bregexp, aby dopasować -bod początku linii

Więc jeśli chcesz, możesz ustawić odpowiednią funkcję dla powłoki

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

i dodaj to na ~/.bashrcprzykład.

Costas
źródło
Myślę, że to nie działa, ponieważ nie będzie pasować do wielu
wierszy
14

Po uruchomieniu man commandmożesz nacisnąć, /a następnie wprowadzić zwykły tekst, aby wyszukać. Na przykład wpisz, /-ba przejdzie do pierwszego wystąpienia -btekstu.

puszysty
źródło
@drewbenn Oh, miło. Zawsze naciskałem /+ Enter, aby kontynuować.
puszysty
10

Napisałem do tego mały skrypt o nazwie on , np he wget -b.

Podstawową strategią jest: wyszukaj opcję (np. -b) Jako pierwsze słowo w wierszu, a następnie drukuj do następnego nagłówka lub następnego wiersza z pasującym wcięciem.

Jeśli nie możesz tego użyć, możesz uzyskać coś podobnego za pomocą podstawowego sed, np

man wget | sed -ne '/^  *-b/,/^$/p'
Mikel
źródło
Również twój skrypt opisu jest bardzo pomocny.
Pandya,
Właśnie postanowiłem zmienić nazwę na he, jak w short help, plus he/ man.
Mikel
Aktualizacja do pracy z nowym przykład wget -b.
Mikel
3

Korzystam z następującego skryptu, który łączy się z wyjaśniahell.com . Skopiowałem go jakiś czas temu z reddit:

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

Nazwałem go rmani umieściłem w swoim $PATH. Zastosowanie do 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

Możesz nieco poprawić ten skrypt, aby nie wyświetlać śmieci na początku.

EDYCJA: Mam to stąd . Dzięki autorowi!

Arkadiusz Drabczyk
źródło
3
Należy zauważyć, że potencjalnie dokumentuje to inną implementację / wersję poleceń niż te zainstalowane na komputerze.
Stéphane Chazelas
Ponadto w kodzie nie ma znaków ucieczki i niepoprawnego cytowania.
l0b0
Tak, zastanawiałem się, czy powinienem to podkreślić. Jeśli jednak konkretna opcja oznacza coś w jednym smaku programu, zwykle oznacza to samo w innym smaku. Częściej brakuje niektórych opcji. Ponownie, to tylko moje doświadczenie.
Arkadiusz Drabczyk
@ l0b0: Nie napisałem tego kodu, nie używałbym bash w pierwszej kolejności
Arkadiusz Drabczyk
0

Alternatywnie, jeśli twój grepjest GNU grep, możesz użyć go w następujący sposób:

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

W którym -A(rozszerzenie GNU) służy do drukowania liczby linii po dopasowaniu linii (tutaj 3). możesz użyć odpowiedniej liczby dla pełnego opisu.

Przykład:

$ 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
źródło
0

Aby korzystać z wiersza poleceń, użyj wersji @Costas.

W przypadku wersji lekkiej manużywa tego samego interfejsu tekstowego co less. Oznacza to, że możesz używać tych samych poleceń, co 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
źródło