it-swarm-ru.tech

Как перейти по ссылкам в справочных страницах Linux?

Есть ли способ перейти по ссылкам, указанным на странице руководства? Например, вот справочная страница для ps; как получить доступ к ссылке, отмеченной красным?

Screenshot of the ps man page

101
its_me

Страницы руководства относятся к nix First Edition . Хотя гипертекст был изобретен, он все еще находился в младенчестве; до Интернета оставалось два десятилетия, и руководство было настоящей печатной книгой, часто с одной командой на страницу, если они подходили (именно поэтому они назывались страницами).

Формат, используемый для страниц справочника, несколько изменился с тех пор, но большинство страниц на самом деле не предназначены для гипертекста, и программа по умолчанию man не поддерживает его (это просто программа просмотра простого текста, с поддержкой хаков) немного базового форматирования). Однако существуют программы для просмотра страниц справочника, которые восстанавливают некоторые гиперссылки, в основном ссылки на другие страницы справочника, которые традиционно записываются в виде man(1), где man - название страницы справочника, а 1 это номер раздела :

  • tkman , просмотрщик страниц графического интерфейса пользователя с гиперссылками
  • WoMan ( wiki , сравнение людей , ранее ), браузер справочной страницы для Emacs, поддерживающий гиперссылки
  • man2html , конвертер человек в HTML (плюс веб-браузер, чтобы прочитать результат)

Вы можете просматривать справочные страницы нескольких операционных систем, преобразованные в HTML с помощью man2html или аналогичные инструменты на ряде сайтов в Интернете, например:

Спустя некоторое время после того, как man-страницы стали установленным форматом документации для Unix, а за некоторое время до изобретения Интернета, проект GNU представил info формат документации, более продвинутый, чем у человека, придерживающийся простой разметки, предназначенной для текстовых терминалов. Основным нововведением информации по сравнению с человеком было создание многостраничной документации с гиперссылками на другие страницы. Информация по-прежнему является предпочтительным форматом документации для проектов GNU), хотя большинство страниц Info создаются из источника Texinfo (или иногда из других форматов), который также может генерировать HTML. Информационная документация для программы существует, она часто является основным руководством, тогда как справочные страницы содержат только основную информацию об аргументах командной строки.

55

Прежде всего, это не ссылка. Это просто подчеркивание. Страницы руководства - это просто текстовые документы с небольшим количеством простого форматирования, которые может обрабатывать терминал. Подчеркивание - это просто подсветка, здесь нет "ссылки".

Обычная команда man - это просто средство форматирования текста. Фактически команда man даже не отображает текст, man просто форматирует информацию, хранящуюся в файле справочной страницы[1] и отправляет форматированный вывод в другую программу (обычно less), которая отображает форматированный вывод на экран. Эти программы отображения не имеют понятия ссылок.

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

Если вы хотите, чтобы веб-форматирование с гиперссылками, вы можете найти почти любую справочную страницу UNIX онлайн с добавленными ссылками. Попробуйте ввести man [anything] в Google, и вы почти наверняка получите один в первой паре хитов.

В случае с вашим примером визуальная подсветка является подсказкой того, что это другое имя программы, имеющее собственную справочную страницу, которую вы можете легко найти. Пытаться man 1 top. 1 указывает на раздел справочных страниц для просмотра. См. Этот вопрос для объяснения разделов: Что означают цифры на справочной странице?


[1] Если вы откроете файл страницы man в текстовом редакторе, вы увидите необработанную страницу man, которая не отформатирована для удобства чтения. Необработанная страница man написана на языке разметки, который называется troff. Для получения дополнительной информации о troff и ​​о том, как написать страницу man, см .: https://liw.fi/manpages/ .

39
Caleb

Это очень поздний ответ, но используйте w3mman. w3mman - это ручной пейджер системы от w3m.

https://linux.die.net/man/1/w3mman

Вы можете попробовать это, установив пакет w3m. Я считаю, что этот пакет зарегистрирован в репозиториях программного обеспечения большинства основных дистрибутивов Linux/UNIX и Cygwin.

13
akawaguc

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

Это самое простое решение - восклицательный знак (если вы используете less для отображения страниц руководства) и вы хотите перейти к подчеркнутому top:

!man top

Или

!man 1 top

Вам придется закрыть их все, нажав q несколько раз. Обратите внимание, что это не будет работать, если LESSSECURE=1 устанавливается как переменная окружения, которая заставляет запускать less в безопасном режиме и не позволяет использовать !. Он скажет вам что-то вроде "Команда недоступна".

11
Anne van Rossum

Хотя w3mman является решением для перехода по ссылкам, он не использует весь экран (по крайней мере, в Ubuntu 12.10)

Я предпочитаю использовать:

$ Sudo su -
# apt-get install w3m man2html
# exit
$ alias man=' hman -P w3m'

добавьте последнюю команду в ~/.bash_aliases или аналогичный сценарий запуска, чтобы получить ее при каждом сеансе.

- P w3m потому, что первым браузером для человека является lynx или sensible-browser но я предпочитаю w3m

hman - это инструмент, связанный с html2man. Смотрите это

Если выход с подтверждением раздражает вас, как для меня это использовать это

2
albfan

Как они сказали, это не было предназначено для этого.

Ты можешь использовать info man, а затем нажмите Enter, когда вы находитесь под разделом СМОТРИТЕ ТАКЖЕ.

info - читать инфо документы

2
binarytrails

Специально для Ubuntu есть Yelp. Он установлен по умолчанию и по умолчанию может отображать справочные страницы, хотя вызов для этого отличается от вызова команды man; псевдоним или функция оболочки могут работать вокруг последней точки (зависит от вашей оболочки).

Yelp 'man:exit'

По умолчанию это будет раздел, который я не знаю. Напоминание: чтобы получить список разделов для темы руководства, используйте whatis, как в whatis exit.

Чтобы попросить Yelp отобразить страницу руководства из определенного раздела, скажем, 2, выполните:

Yelp 'man:exit(2)'

Проблемы: у Yelp есть ошибки и будьте готовы к выводу нескольких ошибок при вызове из командной строки. Там также псевдоним или пользовательская функция оболочки могут помочь перенаправить все ошибки в /dev/null

2
Hibou57

У меня есть (пара) взломать (ы).

взломать 1

Поместите это в ваш ~/.bashrc или ~/.zshrc

function man(){
    for arg in "[email protected]"; do
        vim -c 'execute "normal! :let no_man_maps = 1\<cr>:runtime ftplugin/man.vim\<cr>:Man '"${arg}"'\<cr>:wincmd o\<cr>"'
    done
}

Скриншот..

manual in vim screenshot

Asciinema ..

https://asciinema.org/a/130131

Сейчас же..

  1. когда вы набираете man vim, например, он откроет эту справочную страницу в vim

    • если вы введете man man vim, например, сначала откроется руководство man, а после выхода из vim откроется руководство vim
  2. когда вы нажимаете K (это заглавная k), когда вы находитесь на другой странице руководства внизу (раздел СМОТРИ ТАКЖЕ), вы перейдете к этому руководству (к сожалению, внутри меньше пейджер - потому что у нас есть let no_man_maps = 1; если вы этого не сделаете, то vim заставит q быть :q и ​​вы не сможете легко записать макрос, а vim может вести себя не так, как надо).

    • выход из второго введенного вами руководства вернет вас к предыдущему руководству, которое вы просматривали
  3. вы получаете очень красивую подсветку синтаксиса, так как вы загрузили ftplugin/man.vim и ft (автоматически) установлен в man.

  4. вы можете копировать и вставлять, свободно перемещаться в vim и даже изменять буфер и :w ~/usefulfile. Вы можете делать все, что обычно делаете в vim, включая запись макросов, восстановление в буфер обмена с помощью "+y (если у тебя есть +clipboard) и т. д. и т. д.

Я нахожу это намного лучше, чем меньше.

Единственный незначительный недостаток, который я обнаружил (который все еще существует, если вы используете меньше в качестве пейджера), - это если вы хотите открыть несколько руководств за один сеанс vim. Я действительно не вижу способа сделать это.

Несколько заметок:

  1. если вы попытаетесь сохранить буфер, вы получите E382: Cannot write, 'buftype' option is set

    • Мне нравится, что вы не можете сохранить, поскольку это предотвращает случайное сохранение
  2. вы все еще можете сохранить как :w /tmp/man.man

    • если вы сохраните его с помощью .man расширение, затем его открытие установит для вас тип файла man
    • если вы не сохраните его с помощью .man расширение, вы можете просто установить ft в man, запустив :set ft=man
  3. если вам нужно что-то делать при открытии man-страниц, вы можете использовать autocmd VimEnter *.~ echom 'hooray, we are using vim for man pages!', например.

  4. Я поместил следующее в мой vimrc, чтобы я мог нажать K чтобы попытаться открыть руководство, а затем нажмите G чтобы вернуться к предыдущему руководству:


augroup man
    autocmd!
    autocmd VimEnter *.~ nnoremap B :execute "normal! `Z"<cr>
    autocmd VimEnter *.~ nnoremap <buffer> K :execute "normal! mZyiw:Man \<lt>c-r>\"\<lt>cr>"<cr>
augroup END

взломать 2

поместите это в ваш ~/.bashrc или ~/.zshrc

function man(){
    declare -a args
    for arg in "[email protected]"; do
        command man "$arg" > "/tmp/${arg}.man"
        args+=("/tmp/${arg}.man")
    done
    vim "${args[@]}"
}

Скриншот..

multiple manuals in vim

Asciinema ..

https://asciinema.org/a/9Q6Si90Pi46cDVUknxFxfIwsv

Это решает проблему того, что взломать 1 и less лицо (теперь вы можете просматривать несколько руководств в одном буфере), но это менее элегантно.

Ноты:

  1. [~ # ~] важно [~ # ~] , если вы хотите взломать2 , чтобы работать, то вы должны поставить :let no_man_maps = 1 в вашей ~/.vimrc. Это потому, что vim будет источником .../vim80/man.vim и ​​q будут принудительно переназначены на :q.

  2. там больше очистки (теперь вы храните каждое руководство в /tmp/*. man)

  3. однако теперь вы можете просматривать несколько man-страниц за один сеанс, как отмечено выше

  4. если вы нажмете K, вы все равно откроете новую сессию vim, однако

    • если вы хотите, вы можете привязать autocmd (используя autocmd, как показано выше) сделать что-то вроде autocmd VimEnter man.~ nnoremap <buffer> K :execute "normal! Byt(:silent !man \<c-r>\" > /tmp/\<c-r>\".man\<cr>:edit /tmp/\<c-r>\".man\<cr>" или что-то в этом роде сумасшедшее ( непроверенное )
2
Dylan

Я смог использовать --html аргумент man, чтобы открыть его в браузере, определенном переменной среды $ BROWSER, поэтому:

BROWSER=google-chrome man ps --help

Я использую Fedora. Не уверен, что это работает для вашего дистрибутива, пожалуйста, проверьте и сообщите в комментариях.

1
tutuDajuju