Есть ли способ перейти по ссылкам, указанным на странице руководства? Например, вот справочная страница для ps
; как получить доступ к ссылке, отмеченной красным?
Есть ли способ перейти по ссылкам, указанным на странице руководства? Например, вот справочная страница для ps
; как получить доступ к ссылке, отмеченной красным?
Ответы:
Страницы руководства относятся к Unix First Edition . Хотя гипертекст был изобретен, он все еще находился в младенчестве; до Интернета оставалось два десятилетия, и руководство было настоящей печатной книгой, часто с одной командой на страницу, если они подходили (именно поэтому они назывались страницами).
Формат, используемый для страниц справочника, несколько изменился с тех пор, но большинство страниц на самом деле не предназначены для гипертекста, и man
программа по умолчанию не поддерживает его (это просто просмотрщик простого текста с хаки для поддержки некоторого базового форматирования). Есть , однако просмотр программы человека страницы , которые реконструируют некоторые гиперссылка, в основном ссылки на другие страницы справочника, которые традиционно написаны в форме , man(1)
где man
это имя страницы человека и 1
является номер раздела :
Вы можете просматривать справочные страницы нескольких операционных систем, преобразованных в HTML с помощью man2html
аналогичных инструментов, на нескольких сайтах в Интернете, например:
Через некоторое время после того, как man-страницы стали общепринятым форматом документации в Unix, а за некоторое время до изобретения Интернета, проект GNU представил формат информационной документации, более продвинутый, чем man, придерживаясь простой разметки, предназначенной для текстовых терминалов. Основным нововведением информации по сравнению с человеком было создание многостраничной документации с гиперссылками на другие страницы. Информация по-прежнему является предпочтительным форматом документации для проектов GNU, хотя большинство страниц Info генерируются из источника Texinfo (или иногда из других форматов), который также может генерировать HTML. Когда существует информационная документация для программы, она часто является основным руководством, тогда как справочные страницы содержат только основную информацию об аргументах командной строки.
M-x man
(и C-h v mode-name
есть Man
): по крайней мере, в одном аспекте он превосходит, WoMan
потому что он отображает таблицы ( скриншот ). Конечно, это тоже гиперссылка.
b
. Для пользователя какой парадигмы интерфейса это может быть интуитивно понятно?
page(N)
ссылки в гиперссылки. Был весьма удивлен, что это не было упомянуто в ответе Жиля в этом качестве.
Прежде всего, это не ссылка. Это просто подчеркивание. Страницы руководства - это просто текстовые документы с небольшим количеством простого форматирования, которые может обрабатывать терминал. Подчеркивание - это просто подсветка, здесь нет никакой «ссылки».
Обычная 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 верх» не имеет смысла для меня. Просьба уточнить.
top(1)
ссылке, вам нужно открыть top
страницу руководства из 1-го раздела. Для получения дополнительной информации о разделах смотрите man (1). ps 1 top
не имеет никакого смысла, так как вы просто запустите ps
команду с некоторыми странными для нее параметрами.
readlink
появляется в разделах 1 и 2, а также printf
в разделах 1 и 3. Если вы просто man command
набираете текст, man пробует разделы в числовом порядке и отображает первый найденный файл, или вы можете быть конкретны man # command
, что вам нужно сделать, чтобы получить документацию для readlink
системного вызова.
Это очень поздний ответ, но используйте w3mman. w3mman - это ручной пейджер системы от w3m.
https://linux.die.net/man/1/w3mman
Вы можете попробовать это, установив пакет w3m. Я считаю, что этот пакет зарегистрирован в репозиториях программного обеспечения большинства основных дистрибутивов Linux / UNIX и Cygwin.
w3mman
также предоставляется стандартная w3m
установка Macports . Это здорово :) Спасибо!
Позвольте мне попытаться немного толковать ваш вопрос в том смысле, в котором я пытаюсь следовать вашему рабочему процессу. Вероятно, вы хотели бы иметь комбинацию клавиш на man
странице, которая приведет вас непосредственно к подчеркнутым командам, о которых вы читаете. Таким образом, не нужно устанавливать что-то еще, не открывать другую консоль и, например, забывать точный синтаксис
Это самое простое решение - восклицательный знак (если вы используете less
для отображения страниц руководства), и вы хотите перейти к подчеркнутому top
:
!man top
Или же
!man 1 top
Вам придется закрыть их все, нажав q
несколько раз. Также обратите внимание, что это не будет работать, если LESSSECURE=1
задана переменная окружения, которая запускает работу less
в безопасном режиме и не позволяет использовать ее !
. Он скажет вам что-то вроде «Команда недоступна».
Хотя 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. Смотрите это
Если выход с подтверждением раздражает вас, как мне это использовать этот
Специально для Ubuntu есть Yelp. Он установлен по умолчанию и по умолчанию способен отображать справочные страницы, хотя вызов для этого не совпадает с вызовом man
команды; псевдоним или функция оболочки могут работать вокруг последней точки (зависит от вашей оболочки).
yelp 'man:exit'
По умолчанию это будет раздел, который я не знаю. Напоминание: чтобы получить список разделов для ручной темы, используйте whatis
, как в whatis exit
.
Чтобы попросить Yelp отобразить страницу руководства из определенного раздела, скажем, 2, выполните:
yelp 'man:exit(2)'
Проблемы: у yelp есть ошибки, и будьте готовы к выводу нескольких ошибок при вызове из командной строки. Там также псевдоним или пользовательская функция оболочки могут помочь перенаправить все ошибки в/dev/null
Как они сказали, это не было предназначено для этого.
Вы можете использовать, info man
а затем нажать клавишу ВВОД, как только вы находитесь в разделе СМОТРИ ТАКЖЕ на вашем предмете.
info - читать инфо документы
У меня есть (пара) взломать (ы).
Поместите это в ваш ~ / .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
}
Скриншот..
Asciinema ..
https://asciinema.org/a/130131
В настоящее время..
при вводе man vim
, например, он будет открывать этот человек страницы в Vim
man man vim
например, если вы наберете , сначала откроется man
руководство, а после выхода из vim откроется vim
руководство.когда вы нажимаете K(это заглавная буква k
), когда вы находитесь на другой странице руководства внизу ( см. также раздел « СМОТРИ »), вы переходите к этому руководству (к сожалению, внутри меньшего количества пейджеров - это потому, что у нас есть let no_man_maps = 1
; если вы этого не сделаете, сделайте это, тогда vim заставит q
быть, :q
и вы не сможете легко записать макрос, а vim может вести себя странно иным образом).
вы получаете очень красивую подсветку синтаксиса, так как вы загрузили ftplugin / man.vim и ft (автоматически) установлен на man
.
Вы можете копировать и вставлять, свободно перемещаться в Vim, и даже изменять буфер и :w ~/usefulfile
. Вы можете делать все, что обычно делаете в vim, включая запись макросов, возврат в буфер обмена "+y
(если есть +clipboard
) и т. Д. И т. Д.
Я нахожу это намного лучше, чем меньше .
Единственный небольшой недостаток, который я обнаружил (который все еще существует, если вы используете меньше в качестве пейджера), - это если вы хотите открыть несколько руководств за один сеанс vim. Я действительно не вижу способа сделать это.
Несколько заметок:
если вы попытаетесь сохранить буфер, вы получите E382: Cannot write, 'buftype' option is set
вы все еще можете сохранить как :w /tmp/man.man
.man
расширением, то после его открытия будет установлен тип файла man
для вас.man
расширением, вы можете просто установить ft man
, запустив:set ft=man
например, если вам нужно что-то делать при открытии страниц autocmd VimEnter *.~ echom 'hooray, we are using vim for man pages!'
справочника.
Я поместил в свой 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
поместите это в ваш ~ / .bashrc или ~ / .zshrc
function man(){
declare -a args
for arg in "$@"; do
command man "$arg" > "/tmp/${arg}.man"
args+=("/tmp/${arg}.man")
done
vim "${args[@]}"
}
Скриншот..
Asciinema ..
https://asciinema.org/a/9Q6Si90Pi46cDVUknxFxfIwsv
Это решает проблему взлома 1 и менее лица (теперь вы можете просматривать несколько руководств в одном буфере), но это менее элегантно.
Примечания:
ВАЖНО, если вы хотите, чтобы hack2 работал, тогда вы должны вставить :let no_man_maps = 1
свой ~/.vimrc
. Это потому, что vim будет источником .../vim80/man.vim
и q
будет принудительно переназначен :q
.
там больше очистки (теперь вы храните каждое руководство в /tmp/*.man )
однако теперь вы можете просматривать несколько man-страниц за один сеанс, как отмечено выше
если вы нажмете K, вы все равно откроете новый сеанс VIM, однако
autocmd VimEnter man.~ nnoremap <buffer> K :execute "normal! Byt(:silent !man \<c-r>\" > /tmp/\<c-r>\".man\<cr>:edit /tmp/\<c-r>\".man\<cr>"
или что-то сумасшедшее ( непроверенный )Я смог использовать --html
аргумент для man
того, чтобы открыть его в браузере, определенном переменной среды $ BROWSER, поэтому:
BROWSER=google-chrome man ps --help
Я использую Fedora. Не уверен, что это работает для вашего дистрибутива, пожалуйста, проверьте и сообщите в комментариях.
groff
должен быть установлен. Команда groff
может быть там, в то время как пакет с тем же именем отсутствует (поставляется с командой groff-base
, а не с полным groff
пакетом). Я делаю man --html="surf file%c//%s" <command>
, и это нормально. Хотя есть очень-очень ограниченный гипертекст: - /.
man is an interface to the on-line reference manuals
что (если я не ошибаюсь) означает, что оно должно вытягивать всю информацию с какой-то веб-страницы в Интернете, верно? Итак, кто-нибудь знает, что такое ссылка http: //?