it-swarm-eu.dev

Jak sledovat odkazy na linuxových manuálových stránkách?

Existuje způsob, jak sledovat odkazy uvedené na stránce man? Zde je například manuálová stránka pro ps; Jak se dostanu na odkaz označený červeně?

Screenshot of the ps man page

101
its_me

Man stránky se datují do nix First Edition . Zatímco hypertext byl vynalezen, byl stále v plenkách; web byl o dvě desetiletí dál a příručka byla skutečná tištěná kniha, často s jedním příkazem na stránku, pokud se hodí (proto se jim říkalo stránky).

Formát používaný pro manuální stránky se od té doby poněkud vyvinul, ale většina stránek není ve skutečnosti navržena pro hypertext a výchozí program man ho nepodporuje (je to pouze prohlížeč prostého textu s podporou hackerů) některé základní formátování). Existují však programy pro prohlížení manuálových stránek, které rekonstruují některé hypertextové odkazy, zejména odkazy na jiné manuálové stránky, které jsou tradičně psány ve tvaru man(1) kde man je název manuálové stránky a 1 je číslo sekce :

  • tkman , prohlížeč manuálních stránek GUI s hypertextovými odkazy
  • WoMan ( wiki , porovnávání člověka , dříve ), prohlížeč manuálových stránek pro Emacs, podporující hypertextové odkazy
  • man2html , převodník z HTML na HTML (plus webový prohlížeč pro přečtení výsledku)

Můžete procházet manuálové stránky několika operačních systémů převedené do HTML pomocí man2html nebo podobné nástroje, na mnoha webech online, například:

Nějakou dobu poté, co se mužské stránky staly zavedeným formátem dokumentace na unixu, a nějakou dobu před vynalezením webu, GNU projekt představil info formát dokumentace, pokročilejší než člověk, zatímco se drží jednoduchého označení určeného pro textové terminály. Hlavní novinkou informací ve srovnání s člověkem bylo mít vícestránkovou dokumentaci s hypertextovými odkazy na jiné stránky. Info je stále preferovaným dokumentačním formátem pro projekty GNU=), i když většina informačních stránek je generována ze zdroje Texinfo (nebo někdy i jiných formátů), který může také generovat HTML. informační dokumentace pro program existuje, je to často hlavní příručka, zatímco manuálové stránky obsahují pouze základní informace o argumentech příkazového řádku.

Nejprve to není odkaz. Je to jen podtržení. Manové stránky jsou pouze textové dokumenty s trochou jednoduchého formátování, které terminál zvládne. Podtržení je pouze zvýraznění, nezahrnuje žádné „propojení“.

Normální příkaz man je pouze textový formátovač. Ve skutečnosti příkaz man nezobrazuje text, man pouze formátuje informace uložené v souboru manuálové stránky[1] a odešle formátovaný výstup do jiného programu (obvykle less), který zobrazí formátovaný výstup na obrazovku. Tyto programy zobrazení nemají žádnou koncepci odkazů.

Existuje několik čtenářů speciální dokumentace, kteří by se mohli podívat na formátování, jako je toto, a učinit vzdělaný odhad, že takové zvýraznění může znamenat, že existuje související mužská stránka, kterou by bylo možné vytáhnout a vytvořit odkaz, ale já nevím které dělají. Možná pinfo?

Pokud chcete formátovat web jako hypertextové odkazy, najdete téměř jakoukoli manuálovou stránku UNIX online s přidanými odkazy. Zkuste zadat man [anything] do google a téměř jistě dostanete jeden z prvních pár zásahů.

V případě vašeho příkladu je vizuální zvýraznění vodítkem, že jde o jiný název programu, který má svou vlastní stránku, kterou můžete snadno vytáhnout. Snaž se man 1 top. 1 označuje část manuálových stránek, které je třeba hledat. V této otázce naleznete vysvětlení sekcí: Co znamenají čísla na manuálové stránce?


[1] Pokud otevřete soubor stránky man v textovém editoru, zobrazí se surová stránka man, která není naformátována pro snadné čtení. Nezpracovaná stránka man je zapsána v značkovacím jazyce s názvem troff. Pro více informací o troff a jak napsat stránku man viz: https://liw.fi/manpages/ .

39
Caleb

Toto je velmi pozdní odpověď, ale použijte w3mman. w3mman je systémový ruční pager od w3m.

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

Můžete to zkusit instalací balíčku w3m. Věřím, že tento balíček je registrován v softwarových úložištích většiny hlavních distribucí Linux/UNIX a Cygwin.

13
akawaguc

Dovolte mi, abych se pokusil vaši otázku interpretovat trochu více v tom smyslu, v jakém se snažím sledovat váš pracovní postup. Pravděpodobně byste chtěli mít kombinaci kláves na stránce man, která vás vede přímo k podtrženým příkazům, které čtete. Nemusíte tedy instalovat něco jiného ani otevírat další konzoli a zapomenout například přesnou syntaxi.

Toto nejjednodušší řešení je vykřičník (pokud používáte k zobrazení manuálových stránek less) a chcete přejít na podtržený top:

!man top

Nebo

!man 1 top

Budete je muset všechny zavřít opakovaným stisknutím tlačítka q. Všimněte si také, že to nebude fungovat, pokud LESSSECURE=1 je nastavena jako proměnná prostředí, díky níž bude běh less v zabezpečeném režimu a nedovolí vám použít !. To vám řekne něco jako "Příkaz není k dispozici".

11
Anne van Rossum

Přestože w3mman je řešením pro sledování odkazů, nepoužívá celou obrazovku (alespoň na Ubuntu 12.10)

Dávám přednost použití:

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

přidejte poslední příkaz do ~/.bash_aliases nebo do podobného spouštěcího skriptu, abyste jej dostali v každé relaci.

- P w3m je proto, že první prohlížeč hmanu je lynx nebo sensible-browser , ale já preferovat w3m

hman je nástroj dodávaný v html2man. Viz toto

Pokud je pro vás nepříjemný konec s potvrzením, jako pro mě je použití toto

2
albfan

Jak říkali, nebylo to určeno.

Můžeš použít info man a poté stiskněte Enter, jakmile se nacházíte v sekci VIZ TÉŽ.

info - přečtěte informační dokumenty

2
binarytrails

Konkrétně pro Ubuntu je Yelp. Je nainstalován ve výchozím nastavení a je ve výchozím nastavení schopen zobrazit manuální stránky, i když vyvolání k tomu není stejné jako u příkazu man; alias nebo funkce Shell mohou obejít poslední bod (záleží na vašem Shell).

Yelp 'man:exit'

Výchozí bude sekce způsobem, který nevím. Připomenutí: Chcete-li získat seznam sekcí pro ruční téma, použijte whatis, jako v whatis exit.

Chcete-li požádat Yelp, aby zobrazil manuální stránku z konkrétní sekce, řekněte 2:

Yelp 'man:exit(2)'

Problémy: Yelp má chyby a musí být připraven vyvolat více chyb při vyvolání z příkazového řádku. Také zde může alias nebo vlastní funkce Shell pomoci přesměrovat všechny chyby na /dev/null

2
Hibou57

Mám (pár) hacků.

hack 1

Vložte to do svého ~/.bashrc nebo ~/.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
}

Snímek obrazovky..

manual in vim screenshot

Asciinema ..

https://asciinema.org/a/130131

Nyní..

  1. když zadáte man vim, například otevře tuto manuálovou stránku v vim

    • pokud napíšete man man vim, například, nejprve se otevře man 's manuál a po ukončení vim, to otevře vim' s manuál
  2. když stisknete K (to je kapitál k), když se nacházíte na jiné manuálové stránce v dolní části (sekce SEE ALSO), přejdete na tuto příručku (bohužel uvnitř méně pager - je to proto, že máme let no_man_maps = 1; pokud to neuděláte, vim donutí q být :q a nebudete moci nahrávat makro snadno a vim se může chovat zvědavě jinými způsoby).

    • opuštění tohoto druhého manuálu, který jste zadali, vás vrátí zpět k předchozímu manuálu, který jste prohlíželi
  3. od načtení ftplugin/man.vim a ft je (automaticky) nastaveno na man.

  4. můžete kopírovat a vkládat, volně procházet v vim a dokonce upravovat vyrovnávací paměť a :w ~/usefulfile. Můžete dělat vše, co byste normálně dělali, ve vimu, včetně záznamových maker, přetažení do schránky pomocí "+y (Pokud máte +clipboard) atd. atd.

Připadá mi to mnohem hezčí než méně.

Jedinou menší překážku, kterou jsem našel (která stále existuje, pokud používáte méně jako pager) je, pokud chcete mít otevřeno více příruček v jedné relaci vim. Opravdu nevidím způsob, jak to udělat.

Několik poznámek:

  1. pokud se pokusíte uložit vyrovnávací paměť, dostanete E382: Cannot write, 'buftype' option is set

    • Líbí se mi, že nemůžete uložit, protože to brání náhodnému uložení
  2. stále můžete uložit jako :w /tmp/man.man

    • pokud jej uložíte pomocí .man rozšíření, pak jeho otevření nastaví typ souboru na man pro vás
    • pokud jej neuložíte pomocí .man rozšíření, stačí nastavit ft na man spuštěním :set ft=man
  3. pokud potřebujete dělat věci při otevírání manuálových stránek, můžete použít autocmd VimEnter *.~ echom 'hooray, we are using vim for man pages!', například.

  4. Do vimrc jsem dal následující, abych mohl stisknout K zkuste otevřít příručku a stiskněte G vrátit se k předchozí příručce:


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

hack 2

vložte to do svého ~/.bashrc nebo ~/.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[@]}"
}

Snímek obrazovky..

multiple manuals in vim

Asciinema ..

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

To řeší problém, který hack 1 a méně face (nyní si můžete prohlédnout více příruček v jedné vyrovnávací paměti), ale je méně elegantní.

Poznámky:

  1. [~ # ~] důležité [~ # ~] , pokud chcete, aby hack2 fungoval, musíte vložit :let no_man_maps = 1 ve vašem ~/.vimrc. Je to proto, že vim bude zdrojem .../vim80/man.vim a q budou násilně přemapovány na :q.

  2. je zde více úklidu (nyní uložíte každou příručku do / tmp/*. man)

  3. nyní však můžete zobrazit více manuálových stránek v jedné relaci, jak je uvedeno výše

  4. pokud stisknete K, stále však otevřete novou relaci vim

    • pokud chcete, můžete svázat autocmd (pomocí autocmd jako je výše uvedený) a udělat něco jako autocmd VimEnter man.~ nnoremap <buffer> K :execute "normal! Byt(:silent !man \<c-r>\" > /tmp/\<c-r>\".man\<cr>:edit /tmp/\<c-r>\".man\<cr>" nebo něco takového šíleného ( netestovaného )
2
Dylan

Byl jsem schopen použít --html argument k man za účelem jeho otevření v prohlížeči definovaném proměnnou prostředí $ BROWSER, takže:

BROWSER=google-chrome man ps --help

Používám Fedoru. Nejste si jisti, zda to funguje pro vaše distro, prosím, otestujte a podejte zprávu v komentářích.

1
tutuDajuju