Есть ли способ увидеть документ `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'
Фахим Митха

Ответы:


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'

Также ваш скрипт 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.

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.