2012-11-17 4 views
16

Gibt es eine Möglichkeit, alle Linux-Manpages in reinen Text, HTML oder Markdown zu konvertieren?Konvertieren Sie alle Linux-Manpages in Text/HTML oder Markdown

Ich muss dies für jede Man-Datei, die ich auf meinem System installiert habe.

+2

[Pandoc] (http://johnmacfarlane.net/pandoc/) ziemlich viel tun, aber leider nicht 'man' -> alles else (obwohl es viele Formate in 'man' konvertieren kann) –

+0

Es kann viele Formate in' Mann' konvertieren, schlecht. - FTFY –

Antwort

24

Ja ... Um eine von ihnen zu wandeln, sagen wir, ein Mann des Menschen:

zcat /usr/share/man/man1/man.1.gz | groff -mandoc -Thtml 

Wenn Sie ‚alle auf Ihrem PC installiert‘, die Sie gerade durch sie durchlaufen. Verwenden Sie für unterschiedliche Ausgaben (z. B. Text) ein anderes "Gerät" (das Argument -T).

Nur für den Fall ... wenn die 'Iteration' das eigentliche Problem ist, können Sie verwenden:

OUT_DIR=... 

for i in `find -name '*.gz'`; do 
    dname=`dirname $i` 
    mkdir -p $OUT_DIR/$dname 
    zcat $i | groff -mandoc -Thtml > $OUT_DIR/$i.html 
done 
+0

Danke, ich denke, ich könnte ein Skript erstellen, um es zu tun ... Ich bin auf der Suche nach einem vernünftigen Weg, um alle Man-Dateien zu konvertieren, nicht nur eine. – KJS

+6

Für eine gegebene Manpage $ PAGE funktioniert das, aber leider ist das erzeugte HTML nicht sehr nett (Inline-CSS, keine Klassennamen, nicht-semantisch). Ich hätte gerne eine automatische Verlinkung zu Überschriften usw. Zeit, um das Manpage-Format selbst zu untersuchen ... Kurzbefehl zum Suchen und Ausgeben einer Manpage: '' 'zcat $ (man -w $ PAGE) | groff-mandoc -Thtml''' –

+0

Tolle Tipps; falls OSX-Benutzer dies finden: Verwenden Sie 'gzcat' anstelle von' zcat' um zu dekomprimieren (die meisten Seiten werden nicht wirklich auf OSX komprimiert). Auch wenn Ubuntu (ab 14.04) mit 'groff' kommt, ist der HTML-Ausgabefilter nicht vorinstalliert, und es ist nicht offensichtlich, wie man ihn installiert (weder den' groff' noch den 'groff-base'' apt-get hinzufügt) 'Pakete hilft); Es gibt ein alternatives 'man2html'-Paket, aber beachten Sie, dass sich seine HTML-Ausgabe unterscheidet. – mklement0

0

heute Ihr Glückstag ist. Jemand hat das schon für dich getan. http://linux.die.net/

+3

Aber einige der Seiten dort sind gemunkelt, um nicht auf dem neuesten Stand zu sein. http://www.kernel.org/doc/man-pages/ ist auch ein guter Ort. –

+0

@ Basile - cool. Gut zu wissen. Ich würde vermuten, dass kernel.org auf dem neuesten Stand sein würde. Vielen Dank! – cowboydan

+1

Man Seiten sind dort eingepackt, was ziemlich falsch ist, da ich gerne derjenige sein würde, der die Ausgabebreite steuert. – mbaitoff

7

Verwenden Sie den Befehl man -k '' verfügbar alle Mann-Seite Namen auflisten können, die als find und zcat Urmensch-Seite Datendateien besser sein könnte; In der Zwischenzeit hat der Befehl von man eine Option -T, --troff-device[=DEVICE], die HTML der angegebenen man-page Abschnitt und Name generieren kann. Also folgender Bash-Skript kommt zu konvertiert alle Mann-Seiten in Ihrem Linux in HTML-Dateien:

man -k '' | while read sLine; do 
    declare sName=$(echo $sLine | cut -d' ' -f1) 
    declare sSection=$(echo $sLine | cut -d')' -f1|cut -d'(' -f2) 
    echo "converting ${sName}(${sSection}) to ${sName}.${sSection}.html ..." 
    man -Thtml ${sSection} ${sName} > ${sName}.${sSection}.html 
done 

In einem Intranet ohne Internetzugang, dass online man-pages service nicht verfügbar ist, setzen Sie diese Dateien in Ihrem statischen HTTP-Server wie beispiel als Nginx mit Autoindex auf ist eine gute Option, wo browse und Strg + F bequem sein können.

+1

Es gibt ein Projekt zur Automatisierung dieses Jobs: https: // github.com/vbem/man-to-github-pages – vbem

1
man -Hfirefox ls 

öffnet die Man-Page von "ls" direkt in Firefox

+1

Auf welcher Plattform/Version von man ist diese Option? – crobicha

+0

Hallo @crobicha. Ich kenne nicht die minimale 'Mann'-Version, die diese Option unterstützt. aber mein 'man-2.7.5' hat die Option' -H, --html [= BROWSER] benutzt elinks oder BROWSER, um die HTML-Ausgabe anzuzeigen. Bitte uhelp, verbessere deine Antwort, stelle eine minimale 'man'-Version und einen Auszug aus der man-man-Seite zur Verfügung. Sagen Sie auch, dass die OP-Frage nicht beantwortet wird, um ** ALLE ** lokalen Man-Pages in HTML oder Markdown zu konvertieren. Prost – olibre

+0

Es gibt eine kürzere Befehlszeile: 'man -H ls', aber die Umgebungsvariable' BROWSER' muss vorher gesetzt werden: 'export BROWSER = firefox' – olibre

Verwandte Themen