Как сразу получить абзац для определенной опции команды?

8

Например, вместо всего руководства apt-getя хочу сразу перейти к -fопции из терминала, не используя поиск по man-странице.

RS
источник
1
@M. Бесерра, мой вопрос шире.
RS
@Becerra Мало того, что это более широкий вопрос, но это также другой вопрос, потому что RS хочет вернуть весь абзац опции в результатах man, вместо того, чтобы возвращать беспорядочный список отдельных строк.
Карел

Ответы:

6

По умолчанию пейджер используется manэто less. Вы можете передать шаблон поиска ERE (Extended Regular Expression), который lessпонимает его непосредственно через LESSпеременную окружения, в вашем случае следует сделать следующее:

LESS='+/-f' man apt-get

Это точно так же, как прохождение /-fпосле выполнения man apt-get.

Теперь это выделит все -fs на manстранице, чтобы перейти прямо к нужному параметру -f, т. Е. Вы можете использовать ERE для соответствия только тем строкам, которые начинаются с пробелов / табуляций, а затем -f:

LESS='+/^[[:blank:]]+-f' man apt-get

Хотя это будет сделано здесь, но все же может быть не точным для всех страниц, так как это будет соответствовать всему, что начинается -fпосле начальных пробелов / табуляции. Измените шаблон немного, чтобы удовлетворить ваши потребности в этих случаях.

Вы можете создать крошечную функцию для передачи шаблона поиска и manстраницы для поиска в качестве аргументов, если вы делаете это часто.

heemayl
источник
9

Введите косую черту, то, что вы ищете, и нажмите клавишу ввода. Вы перейдете к первому вхождению. Нажмите, Nчтобы перейти к следующему вхождению и Bвернуться назад. Итак, в этом случае:

/-f <enter>
Джеймс
источник
4
Попробуйте добавить пару пробелов перед тире. Большую часть времени, варианты с отступом и что должны перейти прямо к опции: / -f. Это должно обойти любые встроенные использования -f.
транзистор1
1

Используйте sedдля отображения всего абзаца параметра, начинающегося с дефиса. Чтобы показать весь абзац -fопции сразу, запустив одну команду, используйте:

man apt-get | sed -n '/-f,/,/^$/p'
   -f-,--no-f, -f=no or several other variations.

   -f, --fix-broken
       Fix; attempt to correct a system with broken dependencies in place.
       This option, when used with install/remove, can omit any packages
       to permit APT to deduce a likely solution. If packages are
       specified, these have to completely correct the problem. The option
       is sometimes necessary when running APT for the first time; APT
       itself does not allow broken package dependencies to exist on a
       system. It is possible that a system's dependency structure can be
       so corrupt as to require manual intervention (which usually means
       using dpkg --remove to eliminate some of the offending packages).
       Use of this option together with -m may produce an error in some
       situations. Configuration Item: APT::Get::Fix-Broken.  

Это возвращает весь абзац для -fопции в man, apt-getно приведенную выше команду можно улучшить, удалив запятую после, -fчтобы сделать ее более полезной, как показано ниже:

man apt-get | sed -n '/-f/,/^$/p'

Это возвращает несколько абзацев, большинство из которых вы не хотите читать. Прочитав первые строки нескольких абзацев, вы увидите, что хотите показать только абзац, содержащий эту -f, --fix-brokenопцию. Сделайте это следующим образом:

man apt-get | sed -n '/--fix-broken/,/^$/p'
   -f, --fix-broken
       Fix; attempt to correct a system with broken dependencies in place.
       This option, when used with install/remove, can omit any packages
       to permit APT to deduce a likely solution. If packages are
       specified, these have to completely correct the problem. The option
       is sometimes necessary when running APT for the first time; APT
       itself does not allow broken package dependencies to exist on a
       system. It is possible that a system's dependency structure can be
       so corrupt as to require manual intervention (which usually means
       using dpkg --remove to eliminate some of the offending packages).
       Use of this option together with -m may produce an error in some
       situations. Configuration Item: APT::Get::Fix-Broken. 

Это возвращает только вывод, который вы хотите прочитать. Этот метод работает с любыми другими опциями, которые начинаются с дефиса, и он также работает в основном для поиска опций, которые начинаются с дефиса в других командах, кроме как просто apt-getслишком.

Отображение дополнительной информации с помощью sed

Если описание в одном абзаце не дает достаточной информации, следующая команда покажет первый абзац такой же, как предыдущая команда, а также следующие абзацы после нее.

LESS='+/^[[:space:]]*-f' man apt-get  

Результаты этой команды показывают, что следующие абзацы не очень интересны, но для некоторых вариантов интересны и следующие абзацы. Вот почему это также полезная команда, чтобы знать.

Карел
источник