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

<p>есть ли способ перейти по ссылкам, указанным на странице руководства? например, вот справочная страница для <code>ps</code>; как получить доступ к ссылке, отмеченной красным?</p><p><img src="https://i.stack.imgur.com/zbjuj.jpg" alt="screenshot of the ps man page"></p>

<p>страницы руководства относятся к <a href="http://man.cat-v.org/unix-1st/">nix first edition</a> . хотя <a href="http://en.wikipedia.org/wiki/hypertext">гипертекст</a> был изобретен, он все еще находился в младенчестве; до интернета оставалось два десятилетия, и руководство было настоящей печатной книгой, часто с одной командой на страницу, если они подходили (именно поэтому они назывались страницами).</p><p>формат, используемый для страниц справочника, несколько изменился с тех пор, но большинство страниц на самом деле не предназначены для гипертекста, и программа по умолчанию <code>man</code> не поддерживает его (это просто программа просмотра простого текста, с поддержкой хаков) немного базового форматирования). однако существуют программы для просмотра страниц справочника, которые восстанавливают некоторые гиперссылки, в основном ссылки на другие страницы справочника, которые традиционно записываются в виде <code>man(1)</code>, где <code>man</code> - название страницы справочника, а <code>1</code> это <a href="https://unix.stackexchange.com/questions/3586/what-do-the-numbers-in-a-man-page-mean">номер раздела</a> :</p><ul> <li> <a href="http://sourceforge.net/projects/tkman/">tkman</a> , просмотрщик страниц графического интерфейса пользователя с гиперссылками</li> <li> <a href="https://www.gnu.org/software/emacs/manual/html\_mono/woman.html">woman</a> ( <a href="http://www.emacswiki.org/emacs/woman">wiki</a> , <a href="http://ergoemacs.org/emacs/modernization\_man\_page.html">сравнение людей</a> , <a href="http://centaur.maths.qmw.ac.uk/emacs/woman/">ранее</a> ), браузер справочной страницы для emacs, поддерживающий гиперссылки</li> <li> <a href="http://www.nongnu.org/man2html/">man2html</a> , конвертер человек в html (плюс веб-браузер, чтобы прочитать результат)</li> </ul><p>вы можете просматривать справочные страницы нескольких операционных систем, преобразованные в html с помощью <code>man2html</code> или аналогичные инструменты на ряде сайтов в интернете, например:</p><ul> <li> <a href="http://man.linuxtool.net/">centos</a> </li> <li> <a href="http://manpages.debian.net/cgi-bin/man.cgi">debian</a> </li> <li> <a href="http://www.freebsd.org/cgi/man.cgi">freebsd</a> (и куча других коллекций)</li> <li> <a href="https://developer.apple.com/legacy/library/documentation/darwin/reference/manpages/">mac os x</a> </li> <li> <a href="http://www.minix3.org/manpages/">minix</a> </li> <li> <a href="http://netbsd.gw.com/cgi-bin/man-cgi?++netbsd-current">netbsd</a> </li> <li> <a href="http://www.openbsd.org/cgi-bin/man.cgi">openbsd</a> </li> <li> <a href="http://download.oracle.com/docs/cd/e19253-01/index.html">solaris 1</a> , <a href="http://download.oracle.com/docs/cd/e19963-01/index.html">solaris 11</a> , <a href="http://www.oracle.com/technetwork/documentation/legacy-solaris-192993.html">другие версии solaris</a> </li> <li> <a href="http://manpages.ubuntu.com/">bunt</a> </li> <li> <a href="http://man.cat-v.org/unix-1st/">nix 1-е издание</a> , <a href="http://man.cat-v.org/unix-6th/">nix 6-е издание</a> , <a href="http://man.cat-v.org/unix\_8th/">nix 8-е издание</a> </li> </ul><p>спустя некоторое время после того, как man-страницы стали установленным форматом документации для unix, а за некоторое время до изобретения интернета, проект <a href="http://www.gnu.org/"> gnu </a> представил <a href="http://en.wikipedia.org/wiki/info\_%28unix%29">info</a> формат документации, более продвинутый, чем у человека, придерживающийся простой разметки, предназначенной для текстовых терминалов. основным нововведением информации по сравнению с человеком было создание многостраничной документации с гиперссылками на другие страницы. информация по-прежнему является предпочтительным форматом документации для проектов gnu), хотя большинство страниц info создаются из источника <a href="http://en.wikipedia.org/wiki/texinfo">texinfo</a> (или иногда из других форматов), который также может генерировать html. информационная документация для программы существует, она часто является основным руководством, тогда как справочные страницы содержат только основную информацию об аргументах командной строки.</p>

<p>прежде всего, это не ссылка. это просто подчеркивание. страницы руководства - это просто текстовые документы с небольшим количеством простого форматирования, которые может обрабатывать терминал. подчеркивание - это просто подсветка, здесь нет "ссылки".</p><p>обычная команда <code>man</code> - это просто средство форматирования текста. фактически команда <code>man</code> даже не отображает текст, <code>man</code> просто форматирует информацию, хранящуюся в файле справочной страницы<sup>[1]</sup> и отправляет форматированный вывод в другую программу (обычно <code>less</code>), которая отображает форматированный вывод на экран. эти программы отображения не имеют понятия ссылок.</p><p>есть некоторые специальные программы для чтения документации, которые могли бы взглянуть на такое форматирование и сделать обоснованное предположение, что такое выделение может указывать на то, что есть связанная страница руководства, которую можно открыть и создать ссылку, но я не знаю, какие делают. возможно <code>pinfo</code>?</p><p>если вы хотите, чтобы веб-форматирование с гиперссылками, вы можете найти почти любую справочную страницу unix онлайн с добавленными ссылками. попробуйте ввести <code>man [anything]</code> в google, и вы почти наверняка получите один в первой паре хитов.</p><p>в случае с вашим примером визуальная подсветка является подсказкой того, что это другое имя программы, имеющее собственную справочную страницу, которую вы можете легко найти. пытаться <code>man 1 top</code>. 1 указывает на раздел справочных страниц для просмотра. см. этот вопрос для объяснения разделов: <a href="https://unix.stackexchange.com/q/3586/1925">что означают цифры на справочной странице?</a> </p><hr><p><sup>[1]</sup> если вы откроете файл страницы <code>man</code> в текстовом редакторе, вы увидите необработанную страницу <code>man</code>, которая не отформатирована для удобства чтения. необработанная страница <code>man</code> написана на языке разметки, который называется <code>troff</code>. для получения дополнительной информации о <code>troff</code> и о том, как написать страницу <code>man</code>, см .: <a href="https://liw.fi/manpages/">https://liw.fi/manpages/</a> .</p>

<p>это очень поздний ответ, но используйте w3mman. w3mman - это ручной пейджер системы от w3m.</p><p> <a href="https://linux.die.net/man/1/w3mman">https://linux.die.net/man/1/w3mman</a> </p><p>вы можете попробовать это, установив пакет w3m. я считаю, что этот пакет зарегистрирован в репозиториях программного обеспечения большинства основных дистрибутивов linux/unix и cygwin.</p>

<p>позвольте мне попытаться немного толковать ваш вопрос в том смысле, в котором я пытаюсь следовать вашему рабочему процессу. вероятно, вы хотели бы иметь комбинацию клавиш на странице <code>man</code>, которая приведет вас непосредственно к подчеркнутым командам, о которых вы читаете. таким образом, не нужно устанавливать что-то еще, не открывать другую консоль и не забывать, например, точный синтаксис.</p><p>это самое простое решение - восклицательный знак (если вы используете <code>less</code> для отображения страниц руководства) и вы хотите перейти к подчеркнутому <code>top</code>:</p><pre><code>!man top </code></pre><p>или</p><pre><code>!man 1 top </code></pre><p>вам придется закрыть их все, нажав <code>q</code> несколько раз. обратите внимание, что это не будет работать, если <code>lesssecure=1</code> устанавливается как переменная окружения, которая заставляет запускать <code>less</code> в безопасном режиме и не позволяет использовать <code>!</code>. он скажет вам что-то вроде "команда недоступна".</p>

<p>хотя <strong> w3mman </strong> является решением для перехода по ссылкам, он не использует весь экран (по крайней мере, в ubuntu 12.10)</p><p>я предпочитаю использовать:</p><pre><code>$ sudo su - # apt-get install w3m man2html # exit $ alias man=' hman -p w3m' </code></pre><p>добавьте последнюю команду в <strong> ~/.bash\_aliases </strong> или аналогичный сценарий запуска, чтобы получить ее при каждом сеансе.</p><p><strong> - p w3m </strong> потому, что первым браузером для человека является <a href="http://lynx.browser.org/">lynx</a> или <a href="https://askubuntu.com/a/8255/89479">sensible-browser</a> но я предпочитаю <a href="http://w3m.sourceforge.net/">w3m</a> </p><p><strong> hman </strong> - это инструмент, связанный с html2man. смотрите <a href="http://www.boutell.com/lsm/lsmbyid.cgi/002299">это</a> </p><p>если выход с подтверждением раздражает вас, как для меня это использовать <a href="http://dryice.name/blog/freebsd/quit-w3m-without-confirmation/">это</a> </p>

<p>как они сказали, это не было предназначено для этого.</p><p>ты можешь использовать <code>info man</code>, а затем нажмите enter, когда вы находитесь под разделом <em>смотрите также</em>.</p><blockquote> <p>info - читать инфо документы</p> </blockquote>

<p>специально для ubuntu есть yelp. он установлен по умолчанию и по умолчанию может отображать справочные страницы, хотя вызов для этого отличается от вызова команды <code>man</code>; псевдоним или функция оболочки могут работать вокруг последней точки (зависит от вашей оболочки).</p><pre><code>yelp 'man:exit' </code></pre><p>по умолчанию это будет раздел, который я не знаю. напоминание: чтобы получить список разделов для темы руководства, используйте <code>whatis</code>, как в <code>whatis exit</code>.</p><p>чтобы попросить yelp отобразить страницу руководства из определенного раздела, скажем, 2, выполните:</p><pre><code>yelp 'man:exit(2)' </code></pre><p>проблемы: у yelp есть ошибки и будьте готовы к выводу нескольких ошибок при вызове из командной строки. там также псевдоним или пользовательская функция оболочки могут помочь перенаправить все ошибки в <code>/dev/null</code></p>

<p>у меня есть (пара) взломать (ы).</p><h2>взломать 1</h2><p>поместите это в ваш ~/.bashrc или ~/.zshrc</p><pre><code>function man(){ for arg in "$@"; do vim -c 'execute "normal! :let no_man_maps = 1:runtime ftplugin/man.vim:man '"${arg}"'\<cr>:wincmd o\<cr>"' done } </code></pre><p>скриншот..</p><p> <a href="https://i.stack.imgur.com/a08gq.png"><img src="https://i.stack.imgur.com/a08gq.png" alt="manual in vim screenshot"></a> </p><p>asciinema ..</p><p> <a href="https://asciinema.org/a/130131">https://asciinema.org/a/130131</a> </p><p>сейчас же..</p><ol> <li> <p>когда вы набираете <code>man vim</code>, например, он откроет эту справочную страницу в <em> vim</em></p> <ul> <li>если вы введете <code>man man vim</code>, например, сначала откроется руководство <code>man</code>, а после выхода из vim откроется руководство <code>vim</code></li> </ul> </li> <li> <p>когда вы нажимаете <kbd>k</kbd> (это заглавная <code>k</code>), когда вы находитесь на другой странице руководства внизу (раздел <em> смотри также</em>), вы перейдете к этому руководству (к сожалению, внутри <strong> меньше пейджер </strong> - потому что у нас есть <code>let no\_man\_maps = 1</code>; если вы этого не сделаете, то vim заставит <code>q</code> быть <code>:q</code> и вы не сможете легко записать макрос, а vim может вести себя не так, как надо).</p> <ul> <li>выход из второго введенного вами руководства вернет вас к предыдущему руководству, которое вы просматривали</li> </ul> </li> <li> <p>вы получаете очень красивую подсветку синтаксиса, так как вы загрузили <em> ftplugin/man.vim</em> и ft (автоматически) установлен в <code>man</code>.</p> </li> <li> <p>вы можете копировать и вставлять, свободно перемещаться в vim и даже изменять буфер и <code>:w ~/usefulfile</code>. вы можете делать все, что обычно делаете в vim, включая запись макросов, восстановление в буфер обмена с помощью <code>"+y</code> (если у тебя есть <code>+clipboard</code>) и т. д. и т. д.</p> </li> </ol><p>я нахожу это намного лучше, чем <em> меньше</em>.</p><p>единственный незначительный недостаток, который я обнаружил (который все еще существует, если вы используете меньше в качестве пейджера), - это если вы хотите открыть несколько руководств за один сеанс vim. я действительно не вижу способа сделать это.</p><p>несколько заметок:</p><ol> <li> <p>если вы попытаетесь сохранить буфер, вы получите <code>e382: cannot write, 'buftype' option is set</code></p> <ul> <li>мне нравится, что вы не можете сохранить, поскольку это предотвращает случайное сохранение</li> </ul> </li> <li> <p>вы все еще можете сохранить как <code>:w /tmp/man.man</code></p> <ul> <li>если вы сохраните его с помощью <code>.man</code> расширение, затем его открытие установит для вас тип файла <code>man</code></li> <li>если вы не сохраните его с помощью <code>.man</code> расширение, вы можете просто установить ft в <code>man</code>, запустив <code>:set ft=man</code></li> </ul> </li> <li> <p>если вам нужно что-то делать при открытии man-страниц, вы можете использовать <code>autocmd vimenter *.~ echom 'hooray, we are using vim for man pages!'</code>, например.</p> </li> <li> <p>я поместил следующее в мой vimrc, чтобы я мог нажать <kbd>k</kbd> чтобы попытаться открыть руководство, а затем нажмите <kbd>g</kbd> чтобы вернуться к предыдущему руководству:</p> </li> </ol><hr><pre><code>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 </code></pre><hr><h2>взломать 2</h2><p>поместите это в ваш ~/.bashrc или ~/.zshrc</p><pre><code>function man(){ declare -a args for arg in "$@"; do command man "$arg" > "/tmp/${arg}.man" args+=("/tmp/${arg}.man") done vim "${args[@]}" } скриншот.. <a href="https://i.stack.imgur.com/z4fnv.png"><img src="https://i.stack.imgur.com/z4fnv.png" alt="multiple manuals in vim"> asciinema .. <a href="https://asciinema.org/a/9q6si90pi46cdvuknxfxfiwsv">https://asciinema.org/a/9q6si90pi46cdvuknxfxfiwsv это решает проблему того, что <strong> взломать 1 </strong> и  less лицо (теперь вы можете просматривать несколько руководств в одном буфере), но это менее элегантно.ноты:  <strong> [~ # ~] важно [~ # ~] </strong>, если вы хотите <strong> взломать2 </strong>, чтобы работать, то вы должны поставить :let no_man_maps = 1 в вашей ~/.vimrc. это потому, что vim будет источником .../vim80/man.vim и q будут принудительно переназначены на :q.   там больше очистки (теперь вы храните каждое руководство в /tmp/. man)   однако теперь вы можете просматривать несколько man-страниц за один сеанс, как отмечено выше   если вы нажмете k, вы все равно откроете новую сессию vim, однако  если вы хотите, вы можете привязать autocmd (используя autocmd, как показано выше) сделать что-то вроде autocmd vimenter man.~ nnoremap <buffer> k :execute "normal! byt(:silent !man <c-r>" > /tmp/<c-r>".man:edit /tmp/<c-r>".man" или что-то в этом роде сумасшедшее (<strong> непроверенное </strong>)   

я смог использовать --html аргумент man, чтобы открыть его в браузере, определенном переменной среды $ browser, поэтому:</p><pre><code>browser=google-chrome man ps --help </code></pre><p>я использую fedora. не уверен, что это работает для вашего дистрибутива, пожалуйста, проверьте и сообщите в комментариях.</p>