Чи можна побачити "man" документ лише для вказаної опції команди


24

Якщо я хочу знати значення wget -b, я бачу посібник man wget, а потім шукаю -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 wget -b. (Звичайно, це не працює.)

Чи існує подібний спосіб зробити це можливим?


wget -h | grep '\ -b'
Faheem Mitha

Відповіді:


5

Ви можете перенаправити awkmanpage на та витягнути частину:

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.

Ця частина - це все, що знаходиться між а -bта порожнім рядком.


1
{print}можна опустити
Костас

Дякую, я намагався використовувати з GNU Awk 4.0.1(Ubuntu), GNU Awk 3.1.7(CentOS)та awk version 20070501(OS X), але працює лише з 4.0.1.
ironsand

1
.*$можна також опустити
Вальтер Трос

22

Якщо ви використовуєте lessяк пейджер для людини, ви можете спробувати

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

де

  1. +символ для виконання наступної операції після lessвідкриття
  2. / команда для початку пошуку
  3. ^\s+-bregexp, щоб відповідати -bвід початку рядка

Тож якщо вам подобається, ви можете організувати відповідну функцію для оболонки

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

і додайте його, ~/.bashrcнаприклад.


Це не працює для мене, я думаю, тому що це не буде робити
багаторівневу

14

Під час запуску man commandви можете натиснути, /а потім ввести звичайний текст для пошуку. Наприклад, введіть текст /-bі він перейде до першого екземпляра -bтексту.


@drewbenn О, приємно. Я завжди просто натискав /+ Enter, щоб продовжувати.
пухнастий

10

Я написав невеликий сценарій, щоб це зробити під назвою він , наприклад he wget -b.

Основна стратегія: пошук параметра (наприклад -b) як першого слова на рядку, потім друк до наступного заголовка або наступного рядка з відповідним відступом.

Якщо ви не можете використовувати це, ви можете отримати щось подібне, використовуючи базові sed, наприклад

man wget | sed -ne '/^  *-b/,/^$/p'

Також ваш сценарій desc дуже корисний.
Пандія

Щойно вирішили перейменувати його на he, як у short help, плюс he/ man.
Мікель

Оновлення для роботи з новим прикладом, wget -b.
Мікель

3

Я використовую наступний скрипт, який підключається до openshell.com . Я скопіював це з reddit деякий час тому:

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

Я назвав його rmanі вклав у своє $PATH. Використання для 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

Ви можете трохи налаштувати цей сценарій, щоб не показувати сміття на початку.

РЕДАКТ: Я отримав це звідси . Дякую автору!


3
Важливо зазначити, що це потенційно документує іншу реалізацію / версію команд від встановлених на машині.
Стефан Шазелас

Крім того, у коді немає жодного втечі та поганого цитування.
l0b0

Так, я задумався, чи варто це наголошувати. Однак якщо певний варіант означає щось в одному ароматі програми, він зазвичай означає те саме в іншому ароматі. Що частіше - це те, що деякі варіанти відсутні. Знову ж таки, це лише мій досвід.
Аркадіуш Драбчик

@ l0b0: Я не писав цей код, я б не використовував bash в першу чергу
Arkadiusz Drabczyk

0

Крім того, якщо ваш grepGNU grep, ви можете використовувати його наступним чином:

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

У якому -A(розширення GNU) призначено для друку кількість рядків після відповідних рядків (тут 3). ви можете використовувати відповідний номер для повного опису.

Приклад:

$ 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

Для досвіду використання командного рядка використовуйте версію @Costas.

Для легкої версії manвикористовується той же текстовий інтерфейс, що і для less. Це означає, що ви можете використовувати ті самі команди, що і 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.