Есть ли способ увидеть документ `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. (Конечно, это не работает.)

Есть ли подобный способ сделать это возможным?

Ironsand
источник
wget -h | grep '\ -b'
Фахим Митха

Ответы:

5

Вы можете перенаправить man- awkстраницу и получить доступ к этой части:

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+-bрегулярное выражение для сопоставления -bс начала строки

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

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

и добавить его, ~/.bashrcнапример.

Костас
источник
Это не работает для меня, я думаю, потому что это не будет делать многострочное соответствие
rb612
14

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

пушистый
источник
@ drewbenn О, хорошо. Я всегда просто нажимал /+ ввод, чтобы продолжить.
пушистый
10

Я написал небольшой сценарий для этого, он называется , например he wget -b.

Основная стратегия такова: найдите параметр (например -b) в качестве первого слова в строке, затем напечатайте до следующего заголовка или до следующей строки с соответствующим отступом.

Если вы не можете использовать это, вы можете получить что-то подобное, используя базовый sed , например,

man wget | sed -ne '/^  *-b/,/^$/p'
Mikel
источник
Также ваш скрипт desc очень полезен.
Pandya
Просто решил переименовать его в 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
Важно отметить, что это потенциально документирует реализацию / версию команд, отличную от установленных на машине.
Стефан Шазелас
Кроме того, в коде нет экранирования и плохих цитат.
10
Да, я задавался вопросом, должен ли я подчеркнуть это. Однако, если конкретный параметр означает что-то в одном варианте программы, это обычно означает то же самое в другом варианте. Чаще всего некоторые опции отсутствуют. Опять же, это только мой опыт.
Аркадиуш Драбчик
@ l0b0: я не писал этот код, я бы не стал использовать bash
Аркадиуш Драбчик
0

В качестве альтернативы, если вы grepиспользуете GNU 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.
Pandya
источник
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
K3ARN3Y
источник