Apakah ada cara untuk melihat dokumen `man` hanya untuk opsi yang ditentukan dari suatu perintah

24

Jika saya ingin tahu artinya wget -b, saya melihat manualnya man wget, lalu mencari -bopsi.

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

Saya ingin mendapatkan hasil dengan perintah like man wget -b. (Tentu saja ini tidak berhasil.)

Apakah ada cara serupa untuk memungkinkannya?

pasir besi
sumber
wget -h | grep '\ -b'
Faheem Mitha

Jawaban:

5

Anda dapat mengarahkan halaman manual ke awkdan memperluas bagian:

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.

Bagian itu adalah semua yang ada di antara a -bdan baris kosong.

kekacauan
sumber
1
{print}dapat dihilangkan
Costas
Terima kasih, saya mencoba menggunakan dengan GNU Awk 4.0.1(Ubuntu), GNU Awk 3.1.7(CentOS)dan awk version 20070501(OS X), tetapi hanya bekerja dengan 4.0.1.
ironsand
1
.*$dapat dihilangkan juga
Walter Tross
22

Jika Anda menggunakan lesspager untuk pria, Anda dapat mencoba

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

dimana

  1. +simbol untuk menjalankan operasi selanjutnya setelah lessdibuka
  2. / perintah untuk memulai pencarian
  3. ^\s+-bregexp agar sesuai -bdari awal baris

Jadi jika Anda suka, Anda dapat mengatur fungsi yang sesuai untuk shell

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

dan tambahkan ke ~/.bashrcdalam misalnya.

Costas
sumber
Ini tidak bekerja untuk saya, saya pikir karena tidak akan melakukan pencocokan multiline
rb612
14

Ketika Anda menjalankan, man commandAnda dapat menekan /dan kemudian memasukkan teks biasa untuk mencari. Misalnya, ketik /-bdan itu akan melompat ke contoh pertama -bdalam teks.

halus
sumber
@drewbenn Oh, bagus. Saya selalu menekan /+ enter untuk melanjutkan.
Fluffy
10

Saya menulis sebuah skrip kecil untuk melakukan ini yang disebut dia , mis he wget -b.

Strategi dasarnya adalah: cari opsi (misalnya -b) sebagai kata pertama pada suatu baris, kemudian cetak sampai header berikutnya, atau baris berikutnya dengan indentasi yang sesuai.

Jika Anda tidak dapat menggunakannya, Anda bisa mendapatkan sesuatu yang serupa menggunakan dasar sed, misalnya

man wget | sed -ne '/^  *-b/,/^$/p'
Mikel
sumber
Juga skrip desc Anda sangat membantu.
Pandya
Hanya memutuskan untuk mengubah nama menjadi he, seperti pada short help, plus he/ man.
Mikel
Diperbarui untuk bekerja dengan contoh baru wget -b,.
Mikel
3

Saya menggunakan skrip berikut yang menghubungkan ke menjelaskanshell.com . Saya menyalinnya dari reddit beberapa waktu lalu:

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

Saya menamainya rmandan memasukkannya ke dalam $PATH. Penggunaan untuk 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

Anda dapat sedikit mengubah skrip ini untuk tidak menampilkan sampah di awal.

EDIT: Saya mendapatkannya dari sini . Terima kasih kepada penulis!

Arkadiusz Drabczyk
sumber
3
Penting untuk dicatat bahwa ini berpotensi mendokumentasikan implementasi / versi berbeda dari perintah dari yang diinstal pada mesin.
Stéphane Chazelas
Juga, tidak ada kode yang keluar dan buruk dalam kodenya.
l0b0
Ya, saya bertanya-tanya apakah saya harus menekankan itu. Namun, jika opsi tertentu berarti sesuatu dalam satu rasa program itu biasanya berarti sama dalam rasa lain. Yang lebih sering adalah beberapa opsi hilang. Sekali lagi, ini hanya pengalaman saya.
Arkadiusz Drabczyk
@ l0b0: Saya tidak menulis kode ini, saya tidak akan menggunakan bash di tempat pertama
Arkadiusz Drabczyk
0

Atau, jika Anda grepadalah GNU grep, Anda dapat menggunakannya sebagai berikut:

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

Di mana -A(ekstensi GNU) adalah untuk mencetak sejumlah garis setelah garis yang cocok (di sini 3). Anda dapat menggunakan nomor yang sesuai untuk deskripsi lengkap.

Contoh:

$ 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
sumber
0

Untuk pengalaman baris perintah, gunakan versi @Cas.

Untuk versi yang ringan, mangunakan antarmuka teks yang sama dengan less. Ini berarti Anda dapat menggunakan perintah yang sama dengan 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
sumber