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


92

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

Снимок экрана с man-страницей ps


1
Кроме того, я вижу то, man is an interface to the on-line reference manualsчто (если я не ошибаюсь) означает, что оно должно вытягивать всю информацию с какой-то веб-страницы в Интернете, верно? Итак, кто-нибудь знает, что такое ссылка http: //?
its_me

10
Здесь «онлайн» означает «на компьютере» (в отличие от «на бумаге»), а не «в Интернете».
Жиль

1
«On-Line»: Вы можете вспомнить те квестовые «приключенческие» игры для ПК, которые были выпущены компанией (тогда) под названием Sierra On-Line. Справочные страницы . Лучший способ просмотреть справочные страницы - использовать ваш редактор. Таким образом, навигация, поиск (и т. Д.) Текста будет настолько плавным, что каждый ярлык уже давно остается в вашей мышечной памяти. Также, скажем, вы работаете над проектом по программированию - вы можете скопировать страницы руководства в свой код. Не что иное, как бесшовное взаимодействие. Проверьте это и мой комментарий к @Gilles " ответ .
Эмануэль Берг

Ответы:


52

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

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

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

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

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


5
Отличный ответ! Также стоит упомянуть, что в Emacs есть другой режим для man-страниц, который (по крайней мере, я) получает просто M-x manC-h v mode-nameесть Man): по крайней мере, в одном аспекте он превосходит, WoManпотому что он отображает таблицы ( скриншот ). Конечно, это тоже гиперссылка.
Эмануэль Берг

1
Пользовательский интерфейс информационной программы выглядит просто неправильно и нелогичным. Я не видел, чтобы кто-нибудь использовал это.
Павел Шимерда

@ PavelŠimerda> Пользовательский интерфейс информационной программы выглядит просто неправильно и нелогично . <Эмм, по сравнению с чем? To less (1) (это пейджер по умолчанию для man (1) в GNU) - это та вещь, где вы должны вспомнить, как прокручивать назад , поскольку <backspace> не связан (и <pgup> может вообще не работать) ? Таким образом, первичный ключ b. Для пользователя какой парадигмы интерфейса это может быть интуитивно понятно?
Дмитрий Александров

@ PavelŠimerda> Я не видел, чтобы кто-нибудь использовал это. <Всегда используйте данные (1) для чтения страниц Справочника , когда был заперт в текстовом терминале для точной причине, что в отличие от менее (1) он делает конвертировать тупые page(N)ссылки в гиперссылки. Был весьма удивлен, что это не было упомянуто в ответе Жиля в этом качестве.
Дмитрий Александров

37

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

Обычная 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/ .


Есть идеи, почему это так man 1 top? Я имею в виду, что это должно быть что-то вроде, ps 1 topпотому что я нашел ссылку на странице руководства для ps. «Человек 1 верх» не имеет смысла для меня. Просьба уточнить.
its_me

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

1
Если вы хотите перейти по top(1)ссылке, вам нужно открыть topстраницу руководства из 1-го раздела. Для получения дополнительной информации о разделах смотрите man (1). ps 1 topне имеет никакого смысла, так как вы просто запустите psкоманду с некоторыми странными для нее параметрами.
РВС

2
@Aahan это man 1 top, потому что вы хотите увидеть страницу руководства для команды top в 1-м разделе онлайн-страниц руководства. Справочная верхняя часть (1) означает именно это, верхняя часть в 1-м разделе справочных страниц. Чтобы увидеть это, введите «man 1 top» в командной строке. Видишь "мужик мужик"
тусовка.

1
@Aaran: разделы "руководства" посвящены различным темам. Раздел 1 - пользовательские команды (вещи, которые вы вводите в командной строке), раздел 2 - системные вызовы и т. Д. Некоторые строки отображаются в более чем одном разделе. На компьютере, на котором я работаю Прямо сейчас readlinkпоявляется в разделах 1 и 2, а также printfв разделах 1 и 3. Если вы просто man commandнабираете текст, man пробует разделы в числовом порядке и отображает первый найденный файл, или вы можете быть конкретны man # command, что вам нужно сделать, чтобы получить документацию для readlinkсистемного вызова.
dmckee

12

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

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

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


1
Поздний ответ, который добавляет некоторый ответ на вопрос, который еще не упомянут, никогда не будет проблемой! Добро пожаловать в Unix и Linux StackExchange!
Бернхард

w3mmanтакже предоставляется стандартная w3mустановка Macports . Это здорово :) Спасибо!
Сампаблокупер

8

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

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

!man top

Или же

!man 1 top

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


1

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

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

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

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

-P w3m потому , что первый браузер HMan является рысь или чувственно-браузер , но я предпочитаю w3m

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

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


Моя ошибка, пакет должен быть html2man
albfan

1

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

yelp 'man:exit'

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

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

yelp 'man:exit(2)'

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


1

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

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

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


1

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

взломать 1

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

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

Скриншот..

руководство в скриншоте vim

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. например, если вам нужно что-то делать при открытии страниц 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 "$@"; do
        command man "$arg" > "/tmp/${arg}.man"
        args+=("/tmp/${arg}.man")
    done
    vim "${args[@]}"
}

Скриншот..

несколько руководств в vim

Asciinema ..

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

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

Примечания:

  1. ВАЖНО, если вы хотите, чтобы hack2 работал, тогда вы должны вставить :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>"или что-то сумасшедшее ( непроверенный )

извинения за плохо окрашенные asciinema. Цвета выглядят намного лучше в моем терминале.
Дилан

0

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

BROWSER=google-chrome man ps --help

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


Эта опция, похоже, распознается в Ubuntu 12.04, но она не работает.
Hibou57

ОК, пакет groffдолжен быть установлен. Команда groffможет быть там, в то время как пакет с тем же именем отсутствует (поставляется с командой groff-base, а не с полным groffпакетом). Я делаю man --html="surf file%c//%s" <command>, и это нормально. Хотя есть очень-очень ограниченный гипертекст: - /.
Hibou57
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.