[ Content | View menu ]

Ссылка на определенное место в man’е

Опубликовано 24.08.2009

В блоге «Полезные советы по Linux» наткнулся на способ ссылаться на определенное место в документации:

sh -c 'PAGER="less" LESS="-p search_string" man man_page'

Явно вызываем sh, задаем просмотрщик less и указываем ему строку, которую нужно найти. Команда man запустит less и прокрутит экран до первого совпадения.

Конечно же, необходимо убедиться, что заданный шаблон присутствует в документе хотя бы один раз, и первый раз встречается именно в том месте, на которое вы хотите сослаться. Если ни одного совпадения не найдено, будет выведена ошибка и man будет показан с его начала, да и то только после нажатия Enter. Также стоит учитывать, что у адресата вашего сообщения может быть другой shell, другая версия документации и вообще другая операционная система.

Несколько примеров (предполагаем, что в качестве шелла используется sh-compatible shell типа bash или zsh, а переменная PAGER установлена в less).

Абзац в bash (1) про фичу complete-into-braces из одной из предыдущих заметок:

LESS="-p complete-into-braces" man bash

Раздел про подстановку из истории в bash (1). Поскольку строка HISTORY EXPANSION в документе встречается неоднократно, то требуется привязка к началу строки:

LESS='-p ^s*HISTORY EXPANSION' man bash

Подсветка важной фразы целиком:

LESS='-p Please note.*log the command[^.]*.' man sudo

Этот фокус можно задействовать в других утилитах, использующих less, например, в perldoc:

LESS='-p ^s*Range Operators' perldoc perlop

О том, как эта конструкция работает:

LESS='-p MANPAGER, PAGER' man man
LESS='-p -ppattern.*' man less
LESS='-p Options which.*' man less
«
»

2 комментария

Write a comment - TrackBack - RSS Comments

  1. Comment by muhas:

    Здорово, правда у мну most в качестве читалки манов и сие с ним не работает (хотя поиск через командную строку в нем имеется)

    24.08.2009 @ 14:55
  2. Comment by bappoy:
    PAGER=most MOST_SWITCHES='+/+/' man most

    Он просто ограниченно поддерживает регулярные выражения. Точнее, совсем не поддерживает, потому что найти строку «+/string» у меня так и не удалось.

    24.08.2009 @ 15:14
Write comment

Я не робот.