Ссылка на определенное место в 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
Здорово, правда у мну most в качестве читалки манов и сие с ним не работает (хотя поиск через командную строку в нем имеется)
Он просто ограниченно поддерживает регулярные выражения. Точнее, совсем не поддерживает, потому что найти строку «+/string» у меня так и не удалось.