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?


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.


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.


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.


@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'

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!


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.

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.