Wie folge ich Links in Linux-Manpages?


92

Gibt es eine Möglichkeit, den in einer Manpage genannten Links zu folgen? Hier ist zum Beispiel die Manpage für ps; Wie greife ich auf den rot markierten Link zu?

Screenshot der ps-Manpage


1
Außerdem sehe ich, dass man is an interface to the on-line reference manualsdies (wenn ich mich nicht irre) bedeutet, dass alle Informationen von einer Webseite im Internet abgerufen werden sollten, richtig? Also, jemand hat eine Ahnung, was der http: // Link ist?
its_me

10
Hier bedeutet "online" "auf dem Computer" (im Gegensatz zu "auf Papier"), nicht "im Internet".
Gilles

1
"Online": Vielleicht erinnern Sie sich an die "Adventure" -Quest-Spiele für den PC, die von einer Firma namens Sierra On-Line herausgebracht wurden. Manpages: Die beste Methode zum Durchsuchen von Manpages ist die Verwendung Ihres Editors. Auf diese Weise wird das Navigieren, Durchsuchen (usw.) des Textes so reibungslos wie jede Verknüpfung in Ihrem Muskelgedächtnis seit langem. Angenommen, Sie arbeiten an einem Programmierprojekt - Sie könnten von Manpages in Ihren Code kopieren. Nichts weniger als nahtlose Interaktion. Schauen Sie sich dies und meinen Kommentar zu @ Gilles Antwort an .
Emanuel Berg

Antworten:


52

Die Manpages stammen aus der Unix-Erstausgabe . Obwohl Hypertext erfunden worden war, steckte er noch in den Kinderschuhen. Das Web war zwei Jahrzehnte entfernt, und das Handbuch war ein gedrucktes Buch, oft mit einem Befehl pro Seite, wenn sie passen (deshalb wurden sie Seiten genannt).

Das Format für Handbuchseiten hat sich seitdem etwas weiterentwickelt, aber die meisten Seiten sind nicht wirklich für Hypertext ausgelegt, und das Standardprogramm manunterstützt es nicht (es ist nur eine reine Textanzeige mit Hacks zur Unterstützung einiger grundlegender Formatierungen). Es gibt jedoch Manpage Betrachtungsprogramme , die einige Hyperlinks rekonstruieren, vor allem Links zu anderen Seiten Mann, die in Form traditionell geschrieben werden , man(1)wo mander Name des Mannes Seite ist und 1die Abschnittsnummer :

  • tkman , ein GUI-Manpage-Viewer mit Hyperlinks
  • WoMan ( Wiki , Mann comparsion , früher ), ein Mann Seiten - Browser für Emacs, die Unterstützung von Hyperlinks
  • man2html , ein Konverter von Mann zu HTML (plus einen Webbrowser, um das Ergebnis zu lesen)

Sie können die Handbuchseiten mehrerer Betriebssysteme, die von man2htmloder ähnlichen Tools in HTML konvertiert wurden , auf einer Reihe von Websites online durchsuchen , z.

Einige Zeit, nachdem Manualpages das etablierte Dokumentationsformat unter Unix geworden waren, und einige Zeit, bevor das Web erfunden wurde, führte das GNU- Projekt das Dokumentationsformat info ein , das fortschrittlicher als man war und sich an einfache Markups für Textterminals hielt. Die wichtigste Neuerung von Informationen im Vergleich zum Menschen war die mehrseitige Dokumentation mit Hyperlinks zu anderen Seiten. Info ist immer noch das bevorzugte Dokumentationsformat für GNU-Projekte, obwohl die meisten Infoseiten aus einer Texinfo- Quelle (oder manchmal aus anderen Formaten) generiert werden, die auch HTML generieren können. Wenn eine Informationsdokumentation für ein Programm vorhanden ist, ist dies häufig das Haupthandbuch, während die Manpages nur grundlegende Informationen zu Befehlszeilenargumenten enthalten.


5
Gute Antwort! Erwähnenswert ist auch, dass es in Emacs einen anderen Modus für Manpages gibt, den (zumindest ich) einfach M-x man(und C-h v mode-nameist Man): Zumindest in einem Aspekt ist er dem überlegen, WoManweil er Tabellen anzeigt ( Screenshot ). Natürlich ist es auch verlinkt.
Emanuel Berg

1
Die Benutzeroberfläche des Info-Programms fühlt sich einfach falsch und nicht intuitiv an. Ich habe niemanden gesehen, der das benutzt.
Pavel Šimerda

@ PavelŠimerda> Die Benutzeroberfläche des Info-Programms fühlt sich einfach falsch und nicht intuitiv an. <Emm, verglichen mit was? To less (1) (das ist der Standard-Pager für man (1) in GNU) - das Ding, bei dem man sich daran erinnern muss, wie man zurückscrollt , da <backspace> nicht gebunden ist (und <pgup> möglicherweise überhaupt nicht funktioniert) ? Der Primärschlüssel ist bauf diese Weise. Für einen Benutzer welches Schnittstellenparadigmas mag dies intuitiv sein?
Dmitry Alexandrov

@ PavelŠimerda> Ich habe noch niemanden gesehen, der das benutzt hat. <Verwenden Sie immer info (1) zum Lesen von Manpages , wenn in einem Text - Terminal für den genauen Grund gesperrt wurde, dass im Gegensatz zu weniger (1) es nicht stumm konvertiert page(N)Links in Hyperlinks. War ziemlich überrascht, dass in Gilles 'Antwort in dieser Qualität nicht erwähnt wurde.
Dmitry Alexandrov

37

Erstens ist es kein Link. Es ist nur eine Unterstreichung. Manpages sind nur Textdokumente mit ein bisschen einfacher Formatierung, die ein Terminal verarbeiten kann. Die Unterstreichung ist nur ein Highlight, es handelt sich nicht um einen "Link".

Der normale manBefehl ist nur ein Textformatierer. Tatsächlich zeigt der manBefehl nicht einmal den Text an, sondern manformatiert lediglich die in der Manpage-Datei [1] gespeicherten Informationen und sendet die formatierte Ausgabe an ein anderes Programm (normalerweise less), das die formatierte Ausgabe auf dem Bildschirm anzeigt. Diese Anzeigeprogramme haben kein Konzept für Verknüpfungen.

Es gibt einige spezielle Dokumentationsleser, die in der Lage sind, Formatierungen wie diese zu betrachten und eine fundierte Vermutung anzustellen, dass ein solches Highlight darauf hindeutet, dass es eine verwandte Manpage gibt, die aufgerufen und ein Link erstellt werden kann, aber ich weiß es nicht welche tun. Vielleicht pinfo?

Wenn Sie eine webähnliche Formatierung mit Hyperlinks wünschen, können Sie fast jede UNIX-Manpage online mit hinzugefügten Links finden. Versuchen Sie, man [anything]in Google zu tippen, und Sie werden mit ziemlicher Sicherheit einen der ersten Treffer erhalten.

In Ihrem Beispiel ist die visuelle Hervorhebung ein Hinweis darauf, dass dies ein anderer Programmname ist, der eine eigene Manpage hat, die Sie einfach aufrufen können. Versuchen Sie es man 1 top. Die 1 gibt den Abschnitt der Manpages an, in dem gesucht werden soll. In dieser Frage finden Sie eine Erläuterung der Abschnitte: Was bedeuten die Zahlen in einer Manpage?


[1] Wenn Sie die manAuslagerungsdatei in einem Texteditor öffnen , wird die unformatierte manSeite angezeigt, die nicht zum einfachen Lesen formatiert ist. Die Rohseite manist in einer Auszeichnungssprache namens geschrieben troff. Weitere Informationen troffzum Schreiben einer manSeite finden Sie unter: https://liw.fi/manpages/ .


Irgendeine Idee warum das so ist man 1 top?? Ich meine, es sollte so etwas sein, ps 1 topweil ich den Link auf der Manpage für gefunden habe ps. "man 1 top" macht für mich keinen sinn. Bitte klären Sie.
its_me

Es gibt auch einige Ressourcen, die Manpages im Internet verfügbar machen, wobei Verweise durch hrefs ersetzt werden, auf die geklickt werden kann.
gabe.

1
Wenn Sie dem top(1)"Link" folgen möchten , müssen Sie die topHandbuchseite aus dem 1. Abschnitt öffnen . Weitere Informationen zu Abschnitten finden Sie unter man (1). ps 1 topmacht keinen sinn, da du nur psbefehl mit ein paar dazu komischen params ausführst.
RS

2
@Aahan, es ist Mann 1 oben, weil Sie die Handbuchseite für den Befehl top im ersten Abschnitt der Online-Handbuchseiten anzeigen möchten. Die Referenz top (1) bedeutet genau das, oben im 1. Abschnitt der Manualseiten. Um dies zu sehen, geben Sie an der Eingabeaufforderung "man 1 top" ein. Siehe "man man"
gabe.

1
@Aaran: Die "Abschnitte des Handbuchs behandeln verschiedene Themen. Abschnitt 1 sind Benutzerbefehle (Dinge, die Sie an der Eingabeaufforderung eingeben), Abschnitt 2 sind Systemaufrufe und so weiter. Einige Zeichenfolgen werden in mehr als einem Abschnitt angezeigt. Auf dem Computer, auf dem ich mich befinde Wird jetzt readlinkin Abschnitt 1 und Abschnitt 2 sowie printfin den Abschnitten 1 und 3 man commandangezeigt . Wenn Sie nur tippen , werden die Abschnitte in numerischer Reihenfolge durchsucht und der erste gefundene Abschnitt wird angezeigt, oder Sie können genau festlegen man # command, was Sie tun müssen, um die Dokumentation abzurufen für den readlinkSystemaufruf
dmckee

12

Dies ist eine sehr späte Antwort, aber benutze w3mman. w3mman ist der manuelle Pager des Systems von w3m.

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

Sie können es versuchen, indem Sie das w3m-Paket installieren. Ich glaube, dieses Paket ist in den Software-Repositories der meisten großen Linux / UNIX-Distributionen und von Cygwin registriert.


1
Eine verspätete Antwort, die eine Antwort auf die noch nicht erwähnte Frage gibt, es ist nie ein Problem! Willkommen bei Unix & Linux StackExchange!
Bernhard

w3mmanwird auch mit der Standardinstallation von Macports geliefert w3m. Es ist toll :) Danke!
Sampablokuper

8

Lassen Sie mich versuchen, Ihre Frage etwas genauer zu interpretieren, so dass ich versuche, Ihrem Workflow zu folgen. Was Sie wahrscheinlich gerne hätten, ist eine Tastenkombination auf einer manSeite, die Sie direkt zu den unterstrichenen Befehlen führt, über die Sie gerade lesen. Sie müssen also weder etwas anderes installieren, noch eine andere Konsole öffnen und beispielsweise die genaue Syntax vergessen.

Diese einfachste Lösung ist das Ausrufezeichen (wenn Sie lesszum Anzeigen der Manpages verwenden) und Sie möchten zur unterstrichenen Seite wechseln top:

!man top

Oder

!man 1 top

Sie müssen sie alle schließen, indem Sie qmehrmals drücken . Beachten Sie auch, dass dies nicht funktioniert, wenn LESSSECURE=1als Umgebungsvariable festgelegt wird, die lessim sicheren Modus ausgeführt wird und die Verwendung nicht zulässt !. Es wird Ihnen so etwas wie "Befehl nicht verfügbar" anzeigen.


1

Obwohl w3mman eine Lösung ist, um Links zu folgen, wird nicht der gesamte Bildschirm verwendet (zumindest unter Ubuntu 12.10)

Ich bevorzuge zu verwenden:

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

Fügen Sie den letzten Befehl zu ~ / .bash_aliases oder einem ähnlichen Startskript hinzu , um ihn in jeder Sitzung abzurufen .

Das -P w3m ist, weil der erste Browser für hman Luchs oder vernünftiger Browser ist, aber ich bevorzuge w3m

hman ist ein Tool, das auf html2man gebündelt ist. Sieh das

Wenn Ausfahrt mit der Bestätigung ist ärgerlich für Sie, wie für mich nutzen diese


Mein Fehler, das Paket muss html2man
albfan

1

Speziell für Ubuntu gibt es Yelp. Es ist standardmäßig installiert und kann standardmäßig Manualpages anzeigen, obwohl der Aufruf dazu nicht mit dem des manBefehls identisch ist . Ein Alias ​​oder eine Shell-Funktion kann den letzten Punkt umgehen (hängt von Ihrer Shell ab).

yelp 'man:exit'

Es wird standardmäßig ein Abschnitt angezeigt, den ich nicht kenne. Erinnerung: Um die Abschnittsliste für ein manuelles Thema abzurufen, verwenden Sie whatiswie in whatis exit.

Um Yelp aufzufordern, eine Handbuchseite aus einem bestimmten Abschnitt anzuzeigen, sagen Sie 2:

yelp 'man:exit(2)'

Probleme: yelp hat Fehler und kann beim Aufrufen über die Befehlszeile mehrere Fehler ausgeben. Dort kann auch ein Alias ​​oder eine benutzerdefinierte Shell-Funktion helfen, alle Fehler an umzuleiten/dev/null


1

Wie sie sagten, war es nicht dafür ausgelegt.

Sie können verwenden info manund dann die Eingabetaste drücken, wenn Sie sich im Abschnitt AUCH SEHEN Ihres Artikels befinden.

info - Infodokumente lesen


1

Ich habe ein paar Hack (s).

Hack 1

Fügen Sie dies in Ihre ~ / .bashrc oder Ihre ~ / .zshrc ein

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
}

Bildschirmfoto..

Handbuch in vim Screenshot

Asciinema ..

https://asciinema.org/a/130131

Jetzt..

  1. Wenn Sie man vimbeispielsweise eingeben, wird diese Manpage in vim geöffnet

    • Wenn Sie man man vimbeispielsweise manFolgendes eingeben, wird zuerst das Handbuch geöffnet , und nach dem Beenden von vim wird vimdas Handbuch geöffnet
  2. wenn Sie die Taste K(das Kapital k) , wenn Sie auf einem anderen Mann Seite am Boden (die sind SIEHE AUCH Abschnitt), werden Sie zu diesem Handbuch springen (leider innerhalb von weniger Pager - das ist , weil wir let no_man_maps = 1, wenn Sie nicht tun Wenn Sie dies tun, wird vim gezwungen qzu sein, :qund Sie können ein Makro nicht einfach aufzeichnen, und vim kann sich auf andere Weise verhalten.

    • Wenn Sie dieses zweite eingegebene Handbuch verlassen, kehren Sie zum vorherigen Handbuch zurück, das Sie gerade angezeigt haben
  3. Sie erhalten sehr schöne Syntax-Hervorhebungen, da Sie ftplugin / man.vim geladen haben und ft (automatisch) auf gesetzt ist man.

  4. Sie können kopieren und einfügen, in vim frei navigieren und sogar den Puffer und ändern :w ~/usefulfile. Sie können alles tun, was Sie normalerweise in vim tun würden, einschließlich Aufzeichnungsmakros, Ablegen in die Zwischenablage mit "+y(falls vorhanden +clipboard) usw. usw.

Ich finde es viel schöner als weniger .

Der einzige kleine Nachteil, den ich festgestellt habe (der immer noch besteht, wenn Sie weniger als Pager verwenden), besteht darin, dass Sie mehrere Handbücher in einer vim-Sitzung öffnen möchten. Ich sehe keinen Weg, dies zu tun.

Ein paar Anmerkungen:

  1. Wenn Sie versuchen, den Puffer zu speichern, erhalten Sie E382: Cannot write, 'buftype' option is set

    • Ich mag, dass Sie nicht speichern können, da es verhindert, dass es versehentlich gespeichert wird
  2. du kannst trotzdem gerne sparen :w /tmp/man.man

    • Wenn Sie es mit einer .manErweiterung speichern , wird durch das Öffnen der Erweiterung der Dateityp manfür Sie festgelegt
    • Wenn Sie es nicht mit einer .manErweiterung speichern , können Sie den ft einfach mandurch Ausführen festlegen:set ft=man
  3. Wenn Sie Dinge tun müssen, um Manpages zu öffnen, können Sie diese autocmd VimEnter *.~ echom 'hooray, we are using vim for man pages!'beispielsweise verwenden.

  4. Ich habe Folgendes in mein vimrc eingefügt, damit ich auf drücken kann K, um das Handbuch zu öffnen, und dann Gauf, um zum vorherigen Handbuch zurückzukehren:


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

Fügen Sie dies in Ihr ~ / .bashrc oder ~ / .zshrc ein

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

Bildschirmfoto..

mehrere handbücher in vim

Asciinema ..

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

Dies löst das Problem, dass Hack 1 und weniger Gesicht (jetzt können Sie mehrere Handbücher in einem Puffer anzeigen), aber es ist weniger elegant.

Anmerkungen:

  1. WICHTIG, wenn Sie wollen, dass Hack2 funktioniert, müssen Sie :let no_man_maps = 1Ihre ~/.vimrc. Dies ist darauf zurückzuführen, dass vim als Quelle dient .../vim80/man.vimund qzwangsweise neu zugeordnet wird :q.

  2. Es sind weitere Aufräumarbeiten erforderlich (jetzt speichern Sie jedes Handbuch in /tmp/*.man ).

  3. Sie können jetzt jedoch, wie oben erwähnt, mehrere Manpages in einer Sitzung anzeigen

  4. Wenn Sie auf drücken K, wird dennoch eine neue VIM-Sitzung geöffnet

    • Wenn Sie möchten, können Sie ein Autocmd (mit einem Autocmd wie dem oben genannten) binden, um so etwas autocmd VimEnter man.~ nnoremap <buffer> K :execute "normal! Byt(:silent !man \<c-r>\" > /tmp/\<c-r>\".man\<cr>:edit /tmp/\<c-r>\".man\<cr>"oder so etwas Verrücktes zu tun ( ungetestet ).

Entschuldigung für schlecht gefärbtes Asciinema. Die Farben sehen in meinem Terminal viel besser aus.
Dylan

0

Ich konnte das --htmlArgument manverwenden, um es in dem durch die Umgebungsvariable $ BROWSER definierten Browser zu öffnen.

BROWSER=google-chrome man ps --help

Ich benutze Fedora. Nicht sicher, ob dies für Ihre Distribution funktioniert, bitte testen und in Kommentaren melden.


Die Option scheint unter Ubuntu 12.04 erkannt zu werden, schlägt jedoch fehl.
Hibou57

OK, das Paket groffmuss installiert werden. Der groffBefehl ist möglicherweise vorhanden, während das gleichnamige Paket nicht vorhanden ist (der Befehl wird mit groff-baseund nicht mit dem vollständigen groffPaket geliefert). Das tue ich man --html="surf file%c//%s" <command>und es ist in Ordnung. Es gibt jedoch nur einen sehr begrenzten Hypertext: - /.
Hibou57
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.