Jak podążać za linkami na stronach podręcznika systemu Linux?

91

Czy istnieje sposób na skorzystanie z linków wymienionych na stronie podręcznika? Na przykład, oto strona podręcznika dla ps; jak uzyskać dostęp do linku oznaczonego na czerwono?

Zrzut ekranu strony man ps

to ja
źródło
1
Widzę też to, man is an interface to the on-line reference manualsco (jeśli się nie mylę) oznacza, że ​​powinno pobierać wszystkie informacje z jakiejś strony internetowej, prawda? Czyli ktoś ma pojęcie, co to jest link http: //?
its_me
10
Tutaj „on-line” oznacza „na komputerze” (w przeciwieństwie do „na papierze”), a nie „w Internecie”.
Gilles
1
„On-Line”: Być może pamiętasz gry przygodowe na PC wydane przez firmę (wówczas) Sierra On-Line. strony podręcznika: Najlepszym sposobem przeglądania stron podręcznika jest użycie edytora. W ten sposób nawigacja, wyszukiwanie (itp.) Tekst będzie tak płynny, że od dawna każdy skrót jest w pamięci mięśni. Powiedzmy, że pracujesz nad projektem programistycznym - możesz skopiować ze stron podręcznika do swojego kodu. Nic innego jak bezproblemowa interakcja. Sprawdź to i mój komentarz do odpowiedzi @Gilles .
Emanuel Berg

Odpowiedzi:

51

Strony podręcznika sięgają do Unix First Edition . Chociaż wynaleziono hipertekst , wciąż był w powijakach; Internet był oddalony o dwie dekady, a podręcznik był rzeczywiście drukowaną książką, często z jednym poleceniem na stronę, jeśli pasowały (dlatego nazywano je stronami).

Od tego czasu format strony podręcznika ewoluował nieco, ale większość stron nie jest tak naprawdę zaprojektowana pod kątem hipertekstu, a domyślny manprogram go nie obsługuje (jest to zwykła przeglądarka tekstu z hackami do obsługi podstawowego formatowania). Istnieją jednak strony człowiek oglądania programów, które odtworzyć niektóre hiperłączy, głównie linki do innych stron podręcznika, które są tradycyjnie napisany w formie man(1)gdzie manto nazwa strony człowieka i 1jest numer sekcji :

  • tkman , przeglądarka stron man z GUI z hiperłączami
  • Kobieta ( wiki , człowiek comparsion , dawniej ), przeglądarka strona podręcznika dla Emacsa, hiperłącza wspierające
  • man2html , konwerter człowieka na HTML (plus przeglądarka internetowa do odczytu wyniku)

Możesz przeglądać strony podręcznika kilku systemów operacyjnych, przekonwertowane na HTML przez man2htmllub podobne narzędzia, w wielu witrynach online, na przykład:

Jakiś czas po tym, jak strony podręcznika stały się ustalonym formatem dokumentacji dla Uniksa i jakiś czas przed wynalezieniem sieci, projekt GNU wprowadził format dokumentacji informacji , bardziej zaawansowany niż człowiek, przy jednoczesnym trzymaniu się prostych znaczników zaprojektowanych dla terminali tekstowych. Główną innowacją informacji w porównaniu do człowieka było posiadanie wielostronicowej dokumentacji z linkami do innych stron. Info jest nadal preferowanym formatem dokumentacji dla projektów GNU, chociaż większość stron Info jest generowanych ze źródła Texinfo (lub czasami innych formatów), które mogą również generować HTML. Gdy istnieje dokumentacja informacyjna programu, często jest to główna instrukcja, podczas gdy strony podręcznika zawierają tylko podstawowe informacje o argumentach wiersza poleceń.

Gilles
źródło
5
Świetna odpowiedź! Warto również wspomnieć, że w Emacsie istnieje inny tryb dla stron podręcznika, który (przynajmniej ja) uzyskuje tylko M-x man(i C-h v mode-namejest Man): przynajmniej w jednym aspekcie jest lepszy niż, WoManponieważ wyświetla tabele ( zrzut ekranu ). Oczywiście jest również hiperlinkiem.
Emanuel Berg
1
Interfejs użytkownika programu informacyjnego wydaje się po prostu zły i sprzeczny z intuicją. Nie widziałem, żeby ktoś tego używał.
Pavel Šimerda
@ PavelŠimerda> Interfejs użytkownika programu informacyjnego wydaje się po prostu zły i sprzeczny z intuicją. <Emm, w porównaniu do czego? Do mniej (1) (który jest domyślnym pageriem dla man (1) w GNU) - ta rzecz, w której musisz sobie przypomnieć, jak przewijać wstecz , ponieważ <backspace> nie jest związany (a <pgup> może w ogóle nie działać) ? W bten sposób kluczem podstawowym jest . Dla użytkownika, który paradygmat interfejsu może być intuicyjny?
Dmitrij Aleksandrow
@ PavelŠimerda> Nie widziałem nikogo, kto tego używa. <Zawsze używaj info (1) do czytania stron podręcznika kiedy dostałem zablokowane w terminalu tekstowym do dokładnego powodu, że w przeciwieństwie do mniej (1) to nie konwertować głupie page(N)linki do hiperłączy. Byłem dość zaskoczony, że nie zostało wspomniane w odpowiedzi Gillesa w tej jakości.
Dmitrij Aleksandrow
37

Przede wszystkim nie jest to link. To tylko podkreślenie. Strony podręcznika to tylko dokumenty tekstowe z odrobiną prostego formatowania, które terminal może obsłużyć. Podkreślenie jest tylko atrakcją, nie ma w tym „linku”.

Normalne manpolecenie to tylko formatator tekstu. W rzeczywistości manpolecenie nawet nie wyświetla tekstu, manpo prostu formatuje informacje zapisane w pliku strony man [1] i wysyła sformatowane dane wyjściowe do innego programu (zwykle less), który wyświetla sformatowane dane wyjściowe na ekranie. Te programy wyświetlające nie mają pojęcia łączy.

Istnieją pewne specjalne czytniki dokumentacji, które mogą być w stanie spojrzeć na takie formatowanie i zgadywać, że takie wyróżnienie może wskazywać, że istnieje powiązana strona podręcznika man, którą można podciągnąć i utworzyć link, ale nie wiem które robią. Być może pinfo?

Jeśli chcesz formatować jak w Internecie za pomocą hiperłączy, możesz znaleźć prawie każdą stronę man UNIX online z dodanymi linkami. Spróbuj wpisać man [anything]google, a prawie na pewno dostaniesz jedną z pierwszych kilku trafień.

W przypadku twojego przykładu, wizualne podświetlenie jest wskazówką, że jest to kolejna nazwa programu, która ma własną stronę podręcznika, którą możesz łatwo wyciągnąć. Spróbować man 1 top. Liczba 1 wskazuje sekcję stron podręcznika, na które należy zajrzeć. Zobacz to pytanie, aby uzyskać wyjaśnienie części: Co oznaczają liczby na stronie podręcznika?


[1] Jeśli otworzysz manplik strony w edytorze tekstu, zobaczysz surową manstronę, która nie jest sformatowana do łatwego czytania. Nieprzetworzona manstrona jest napisana w języku znaczników o nazwie troff. Więcej informacji na trofftemat pisania manstrony znajduje się na stronie: https://liw.fi/manpages/ .

Caleb
źródło
Każdy pomysł, dlaczego tak jest man 1 top? Powinno to być coś podobnego, ps 1 topponieważ znalazłem link na stronie podręcznika użytkownika ps. „Man 1 top” nie ma dla mnie sensu. Proszę o wyjaśnienie.
its_me
Istnieją również zasoby, które sprawiają, że strony podręcznika man są dostępne w Internecie, a odnośniki są zastępowane przez href, które można kliknąć.
Gabe.
1
Jeśli chcesz podążać za top(1)„linkiem”, musisz otworzyć topstronę podręcznika z 1. części. Aby uzyskać więcej informacji o sekcjach, patrz man (1). ps 1 topnie ma żadnego sensu, ponieważ po prostu uruchomisz pspolecenie z dziwnymi parametrami.
rvs
2
@Aahan to top 1 man, ponieważ chcesz zobaczyć stronę podręcznika dla polecenia top w pierwszej sekcji stron podręcznika online. Odnośnik do góry (1) oznacza właśnie to, że do góry w pierwszej części stron podręcznika. Aby to zobaczyć, wpisz „man 1 top” w wierszu polecenia. Zobacz „człowiek mężczyzna”
gabe.
1
@Aaran: „Sekcje podręcznika obejmują różne tematy. Sekcja 1 to polecenia użytkownika (to, co wpisujesz po znaku zachęty), sekcja 2 to wywołania systemowe itd. Niektóre ciągi znaków pojawiają się w więcej niż jednej sekcji. Na komputerze pracuję teraz readlinkpojawia się w sekcjach 1 i 2 oraz printfw sekcjach 1 i 3. Jeśli po prostu wpiszesz man command, man spróbuje sekcje w kolejności numerycznej i wyświetli pierwsze znalezione, lub możesz być konkretny man # command, co musisz zrobić, aby uzyskać dokumentację dla readlinkwywołania systemowego
dmckee,
12

To jest bardzo późna odpowiedź, ale użyj w3mman. w3mman to ręczny pager systemowy autorstwa w3m.

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

Możesz spróbować, instalując pakiet w3m. Wierzę, że ten pakiet jest zarejestrowany w repozytoriach oprogramowania większości głównych dystrybucji Linux / UNIX i Cygwin.

akawaguc
źródło
1
Późna odpowiedź, która dodaje pewną odpowiedź na pytanie, o którym jeszcze nie wspomniano, nigdy nie stanowi problemu! Witamy w Unix i Linux StackExchange!
Bernhard
w3mmanjest również dostarczany z domyślną w3minstalacją Macports . To wspaniale :) Dzięki!
sampablokuper
8

Pozwól, że spróbuję bardziej zinterpretować twoje pytanie w tym sensie, że staram się podążać za tobą. Prawdopodobnie chciałbyś mieć kombinację klawiszy na manstronie, która prowadzi bezpośrednio do podkreślonych poleceń, o których czytasz. Nie trzeba więc instalować czegoś innego, nie otwierać innej konsoli i zapomnieć na przykład o dokładnej składni.

Najprostszym rozwiązaniem jest wykrzyknik (jeśli używasz lessdo wyświetlania stron podręcznika) i chcesz przejść do podkreślonego top:

!man top

Lub

!man 1 top

Będziesz musiał zamknąć je wszystkie, naciskając qwiele razy. Zauważ też, że to nie zadziała, jeśli LESSSECURE=1zostanie ustawione jako zmienna środowiskowa, która uruchomi się lessw trybie bezpiecznym i nie pozwoli na użycie !. Powie ci coś w rodzaju „Polecenie niedostępne”.

Anne van Rossum
źródło
1

Chociaż w3mman jest rozwiązaniem umożliwiającym śledzenie linków, nie używa całego ekranu (przynajmniej w Ubuntu 12.10)

Wolę używać:

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

dodaj ostatnią komendę do ~ / .bash_aliases lub podobnego skryptu startowego, aby uzyskać ją w każdej sesji.

-P w3m dlatego pierwsza przeglądarka hman jest ryś lub sensible-browser ale wolę w3m

hman to narzędzie dołączone do html2man. Zobacz to

Jeśli wyjście z potwierdzeniem jest dla ciebie denerwujące, to dla mnie skorzystaj z tego

albfan
źródło
Mój błąd, pakiet musi być html2man
albfan
1

Specjalnie dla Ubuntu istnieje Yelp. Jest instalowany domyślnie i domyślnie jest w stanie wyświetlać strony podręcznika, chociaż wywołanie w tym celu nie jest tym samym, co manpolecenie; Alias ​​lub funkcja powłoki może działać wokół tego ostatniego punktu (zależy od powłoki).

yelp 'man:exit'

Domyślnie będzie to sekcja w sposób, którego nie znam. Przypomnienie: aby uzyskać listę rozdziałów na temat podręcznika, użyj whatis, jak w whatis exit.

Aby poprosić Yelp o wyświetlenie strony podręcznika z określonej sekcji, powiedzmy 2, wykonaj:

yelp 'man:exit(2)'

Problemy: yelp ma błędy i bądź przygotowany na otrzymanie wielu błędów wyjściowych podczas wywoływania go z wiersza poleceń. Tam również alias lub niestandardowa funkcja powłoki może pomóc w przekierowaniu wszystkich błędów/dev/null

Hibou57
źródło
1

Jak powiedzieli, nie został do tego zaprojektowany.

Możesz użyć, info mana następnie nacisnąć Enter, gdy znajdziesz się w sekcji ZOBACZ TAKŻE na swoim produkcie.

info - przeczytaj dokumenty informacyjne

binarytrails
źródło
1

Mam (kilka) włamań.

włamać się 1

Umieść to w swoim ~ / .bashrc lub ~ / .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
}

Zrzut ekranu..

instrukcja w vimie

Asciinema ..

https://asciinema.org/a/130131

Teraz..

  1. man vimna przykład podczas pisania otworzy się ta strona podręcznika w vim

    • jeśli man man vimna przykład wpiszesz , najpierw otworzy maninstrukcję, a po wyjściu z vima, otworzy viminstrukcję
  2. kiedy naciśniesz K(to kapitał k), gdy znajdziesz się na innej stronie podręcznika u dołu ( sekcja ZOBACZ TAKŻE ), przejdziesz do tej instrukcji (niestety wewnątrz mniej pagera - let no_man_maps = 1dzieje się tak dlatego, że mamy ; jeśli nie masz zrób to, wtedy vim zmusi qdo bycia :qi nie będziesz w stanie łatwo zapisać makra, a vim może zachowywać się chwiejnie na inne sposoby).

    • wyjście z drugiej wprowadzonej instrukcji spowoduje powrót do poprzedniej instrukcji, którą przeglądałeś
  3. dostajesz bardzo ładne podświetlanie składni, ponieważ załadowałeś ftplugin / man.vim, a ft jest (automatycznie) ustawiony na man.

  4. możesz kopiować i wklejać, swobodnie nawigować w vimie, a nawet modyfikować bufor i :w ~/usefulfile. Możesz robić wszystko, co normalnie robisz w vimie, w tym makra nagrywania, szarpać do schowka za pomocą "+y(jeśli masz +clipboard) itp.

Uważam, że jest to o wiele ładniejsze niż mniej .

Jedynym drobnym problemem, który znalazłem (który nadal istnieje, jeśli używasz mniej jako pager) jest to, że chcesz mieć wiele instrukcji otwartych w jednej sesji vim. Naprawdę nie widzę sposobu, aby to zrobić.

Kilka uwag:

  1. jeśli spróbujesz zapisać bufor, otrzymasz E382: Cannot write, 'buftype' option is set

    • Podoba mi się, że nie można zapisać, ponieważ zapobiega to przypadkowemu zapisaniu
  2. nadal możesz zapisać jak :w /tmp/man.man

    • jeśli zapiszesz go z .manrozszerzeniem, otwarcie go ustawi mandla ciebie typ pliku
    • jeśli nie zapiszesz go z .manrozszerzeniem, możesz po prostu ustawić ft man, uruchamiając:set ft=man
  3. jeśli na przykład potrzebujesz zrobić coś podczas otwierania stron podręcznika użytkownika autocmd VimEnter *.~ echom 'hooray, we are using vim for man pages!'.

  4. W moim vimrc umieściłem następujące elementy, dzięki czemu mogę nacisnąć, Kaby spróbować otworzyć instrukcję, a następnie nacisnąć, Gaby wrócić do poprzedniej instrukcji:


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

włamać się 2

umieść to w swoim ~ / .bashrc lub ~ / .zshrc

function man(){
    declare -a args
    for arg in "$@"; do
        command man "$arg" > "/tmp/${arg}.man"
        args+=("/tmp/${arg}.man")
    done
    vim "${args[@]}"
}

Zrzut ekranu..

wiele instrukcji w vimie

Asciinema ..

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

To rozwiązuje problem włamania 1 i mniejszej twarzy (teraz możesz przeglądać wiele instrukcji w jednym buforze), ale jest mniej elegancki.

Uwagi:

  1. WAŻNE jeśli chcesz hack2 do pracy, wówczas należy umieścić :let no_man_maps = 1w twojej ~/.vimrc. Wynika to z tego, że vim będzie pozyskiwał źródła .../vim80/man.vimi qzostanie do nich przymusowo mapowany :q.

  2. w grę wchodzi więcej sprzątania (teraz zapisujesz każdą instrukcję w /tmp/*.man )

  3. możesz jednak teraz przeglądać wiele stron podręcznika w jednej sesji, jak wspomniano powyżej

  4. jednak jeśli naciśniesz K, nadal otworzysz nową sesję vim

    • jeśli chcesz, możesz powiązać autocmd (używając autocmd takiego jak powyższy), aby zrobić coś takiego autocmd VimEnter man.~ nnoremap <buffer> K :execute "normal! Byt(:silent !man \<c-r>\" > /tmp/\<c-r>\".man\<cr>:edit /tmp/\<c-r>\".man\<cr>"lub coś szalonego takiego ( nieprzetestowane )
Dylan
źródło
przeprosiny za źle zabarwiony asciinema. Kolory wyglądają o wiele ładniej na moim terminalu.
Dylan
0

Byłem w stanie użyć tego --htmlargumentu man, aby otworzyć go w przeglądarce zdefiniowanej przez zmienną środowiskową $ BROWSER, więc:

BROWSER=google-chrome man ps --help

Używam Fedory. Nie jestem pewien, czy to działa w przypadku Twojej dystrybucji, przetestuj i zgłoś w komentarzach.

tutuDajuju
źródło
Opcja wydaje się rozpoznana w systemie Ubuntu 12.04, ale się nie udaje.
Hibou57,
OK, pakiet groffmusi zostać zainstalowany. groffKomenda może być tam, gdy pakiet o tej samej nazwie nie jest (komenda wyposażony groff-base, a nie pełnego groffpakietu). Robię man --html="surf file%c//%s" <command>i jest w porządku. Hipertekst jest jednak bardzo ograniczony: - /.
Hibou57,