Як слідкувати за посиланнями на сторінках man linux?


91

Чи є спосіб перейти за посиланнями, згаданими на сторінці чоловіка? Наприклад, ось сторінка man для ps; як я можу отримати доступ до посилання, позначеного червоним кольором?

Знімок екрана сторінки ps man


1
Також я бачу те, man is an interface to the on-line reference manualsщо (якщо я не помиляюся) означає, що воно повинно перетягувати всю інформацію з якоїсь веб-сторінки в Інтернеті, правда? Отже, хтось має підказку щодо того, що таке http: // посилання?
its_me

10
Тут "он-лайн" означає "на комп'ютері" (на відміну від "на папері"), а не "в Інтернеті".
Жиль

1
"Он-лайн": Ви можете запам’ятати ті квест-ігри "Adventure" для ПК, які випустила компанія (тоді) на ім'я Sierra On-Line. man man pages: Найкращий спосіб перегляду сторінок man - це використання свого редактора. Таким чином, навігація, пошук (і т.д.) тексту будуть настільки гладкими, як кожен ярлик у вашій м’язовій пам’яті з давніх-давен. Крім того, скажіть, що ви працюєте над проектом програмування - ви можете скопіювати зі сторінки man у свій код. Не менш ніж безшовна взаємодія. Перевірте це та мій коментар до відповіді @Gilles .
Емануель Берг

Відповіді:


51

Сторінки чоловіка датуються першим виданням Unix . Поки був винайдений гіпертекст , він ще був у немовляті; Інтернету було два десятиліття, а посібник - це фактична друкована книга, часто з однією командою на сторінку, якщо вони підходять (тому їх називали сторінками).

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

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

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

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


5
Чудова відповідь! Варто також зазначити, що в Emacs існує ще один режим для man-сторінок, який (принаймні я) отримують просто M-x manC-h v mode-nameє Man): принаймні в одному аспекті він є кращим, WoManоскільки відображає таблиці ( скріншот ). Звичайно, це також гіперпосилання.
Емануель Берг

1
Користувацький інтерфейс інформаційної програми відчуває себе просто неправильним та контрінтуїтивним. Я не бачив, щоб хтось використовував це.
Павло Шімерда

@ PavelŠimerda> Інтерфейс користувача інформаційної програми відчуває себе просто неправильним та контрінтуїтивним. <Емм, порівняно з чим? Менше (1) (що за замовчуванням пейджер для людини (1) у GNU) - це річ, де вам потрібно нагадати, як прокрутити назад , оскільки <backspace> не пов'язаний (а <pgup> може не працювати взагалі) ? Первинний ключ b, таким чином. Користувачеві якої парадигми інтерфейсу це може бути інтуїтивно зрозумілим?
Дмитро Олександров

@ PavelŠimerda> Я не бачив, щоб хтось використовував це. <Завжди використовуйте дані (1) для читання сторінок Довідника , коли був замкнений в текстовому терміналі для точної причини, що в відміну від менш (1) він робить конвертувати тупі page(N)посилання на гіперпосилання. Був досить здивований, що у відповіді Джилса в цій якості не згадується.
Дмитро Олександров

37

Перш за все, це не посилання. Це просто підкреслення. Сторінки "man" - це лише текстові документи з невеликим простим форматуванням, з яким може працювати термінал. Підкреслення - це лише родзинка, жодного "посилання" немає.

Звичайна manкоманда - це просто текстовий формат. Насправді manкоманда навіть не відображає текст, а manпросто форматує інформацію, що зберігається у файлі довідної сторінки [1], і відсилає відформатований вихід в іншу програму (як правило less), яка відображає відформатований вихід на екран. Ці програми відображення не мають поняття посилань.

Є деякі читачі спеціальної документації, які могли б переглядати подібне форматування і зробити так, щоб освічена здогадка про те, що така підсвітка може означати, що є пов’язана сторінка, яка може бути витягнута і створити посилання, але я не знаю які роблять. Можливо pinfo?

Якщо ви хочете в Інтернеті, як форматування за допомогою гіперпосилань, ви можете знайти майже будь-яку сторінку користувача UNIX в Інтернеті із доданими посиланнями. Спробуйте ввести man [anything]Google, і ви майже напевно отримаєте її в першій кількості звернень.

Що стосується вашого прикладу, то візуальне виділення - це підказка, що це ще одна назва програми, яка має власну сторінку man, яку ви можете легко підтягнути. Спробуйте man 1 top. 1 позначає розділ підручних сторінок, на який слід ознайомитися. Див. Це запитання для пояснення розділів: Що означають цифри на довільній сторінці?


[1] Якщо ви відкриєте manфайл сторінки у текстовому редакторі, ви побачите необроблену manсторінку, яка не відформатована для зручного читання. Неопрацьована manсторінка написана мовою розмітки під назвою troff. Для отримання додаткової інформації про troffте, як писати manсторінку, див. Https://liw.fi/manpages/ .


Будь-яка ідея, чому це man 1 top?? Я маю на увазі, що це має бути щось на кшталт, ps 1 topтому що я знайшов посилання на сторінці людини ps. "man 1 top" для мене не має сенсу. Будь ласка, поясніть.
its_me

Є також деякі ресурси, які роблять доступні сторінки в Інтернеті, із посиланнями, заміненими на href, які можна натискати.
габе.

1
Якщо ви хочете перейти за top(1)посиланням, вам потрібно відкрити topсторінку керівництва з 1-го розділу. Більше інформації про розділи див. У людині (1). ps 1 topце не має ніякого сенсу, оскільки ви просто запускаєте psкоманду якимись дивними їй парамами.
rvs

2
@Aahan це man 1 top, тому що ви хочете побачити сторінку керівництва для верхньої команди в 1-му розділі сторінок онлайн-інструкцій. Посилання вгорі (1) означає саме це, зверху в 1-му розділі сторінок керівництва. Щоб побачити це, ви вводите "man 1 top" у відповідь. Бачити "людина-людина"
gabe.

1
@Aaran: "Розділи посібника охоплюють різні теми. Розділ 1 - це команди команд (речі, які ви вводите підказки), розділ 2 - це системні виклики тощо". У деяких рядках з'являється не більше одного розділу. На машині я перебуваю на зараз readlinkз’являється у розділі 1 та розділі 2 та printfу розділах 1 та 3. Якщо ви просто введете man command, людина випробовує розділи у цифровому порядку та відображає перше, що знайде, або ви можете конкретизувати 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 за замовчуванням . Чудово :) Дякую!
sampablokuper

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а потім натиснути клавішу Enter, перебуваючи під розділом ДИВІТЬСЯ ТАКОЖ на своєму предметі.

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, наприклад, він відкриє цю сторінку чоловіка in 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[@]}"
}

Знімок екрана ..

кілька посібників in 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. однак ви можете переглядати декілька чоловічих сторінок за один сеанс, як зазначено вище

  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>"або щось таке божевільне ( неперевірене )

вибачення за погано забарвлену асцинему. Кольори виглядають набагато приємніше в моєму терміналі.
Ділан

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.