2012-11-17 14 views
16

Czy istnieje sposób na przekonwertowanie wszystkich stron w systemie Linux na zwykły tekst, html lub przecenę?Konwertuj wszystkie strony podręcznika systemu Linux na tekst/html lub przecenę

Potrzebuję zrobić to dla każdego pliku, który zainstalowałem w moim systemie.

+2

[Pandoc] (http://johnmacfarlane.net/pandoc/) można zrobić całkiem sporo, ale niestety nie 'man' -> nic else (choć może konwertować wiele formatów na 'man') –

+0

Może konwertować wiele formatów na' man', słabo. - FTFY –

Odpowiedz

24

Tak ... Aby przekonwertować jednego z nich, powiedzmy, człowiek człowieka:

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

Jeśli chcesz „wszystkie zainstalowane na komputerze”, po prostu iterację nich. Dla różnych wyników (na przykład tekst) użyj innego "urządzenia" (argument -T).

... Tylko w przypadku, gdy „iteracja” był prawdziwy problem, można użyć:

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

Dzięki, myślę, że mógłbym napisać scenariusz, żeby to zrobić ... Szukam rozsądnego sposobu na konwersję wszystkich plików, nie tylko jednego. – KJS

+6

Dla danej strony podręcznika $ PAGE działa to, ale niestety kod HTML jest niezbyt przyjemny (wbudowany styl CSS, brak nazw klasowych, nie-semantyczny). Chciałbym mieć automatyczne łączenie z nagłówkami itd. Czas na samodzielne studiowanie formatu strony ... Szybki skrót do wyszukiwania i wyprowadzania strony podręcznika: '' 'zcat $ (man -w $ PAGE) | groff -mandoc -Thtml''' –

+0

Świetne wskazówki; na wypadek, gdyby użytkownicy OSX znaleźli to: używaj 'gzcat' zamiast' zcat' do dekompresji (większość stron nie jest faktycznie skompresowana na OSX). Ponadto, podczas gdy Ubuntu (od 14.04) ma "groff", filtr wyjściowy HTML nie jest preinstalowany i nie jest oczywiste, jak go zainstalować (nie dodając 'groff' ani' groff-base'' apt-get 'pakiety pomagają); istnieje alternatywny pakiet 'man2html', ale zauważ, że jego format wyjściowy HTML jest inny. – mklement0

0

Dzisiaj jest twój szczęśliwy dzień. Ktoś już to zrobił dla ciebie. http://linux.die.net/

+3

Ale niektóre strony tam są podobno nieaktualne. http://www.kernel.org/doc/man-pages/ to także dobre miejsce. –

+0

@Basile - fajne. Dobrze wiedzieć. Podejrzewam, że kernel.org będzie na czasie. Dzięki! – cowboydan

+1

Strony man są tam owinięte, co jest całkiem błędne, ponieważ chciałbym być tym, który kontroluje szerokość wyjściową. – mbaitoff

7

Użyj polecenia man -k '' mógł wymienić wszystkie nazwiska człowieka stron dostępne, co może być lepsze niż find i zcat oryginalnych plików danych przez człowieka stronie; Tymczasem polecenie człowieka ma opcję -T, --troff-device[=DEVICE], która może generować HTML danej sekcji i nazwy strony man. Więc po bash skrypt przychodzi do Konwersja wszystkich Manuali dostępne w systemie Linux do plików HTML:

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 

W intranetu bez dostępu do internetu, które online man-pages service jest niedostępny, umieścić to pliki na serwerze statyczny HTTP takiego jak Nginx z autoindex na jest dobrym rozwiązaniem, gdzie browse i Ctrl + F może wygodne.

+1

Istnieje projekt automatyzacji tego zadania: https: // github.com/vbem/man-to-github-pages – vbem

1
man -Hfirefox ls 

otwiera manpage z "ls" bezpośrednio w Firefoksie

+1

Na której platformie/wersji man jest ta opcja? – crobicha

+0

Witam @ crobicha. Nie znam minimalnej wersji "man" obsługującej tę opcję. ale mój 'man-2.7.5' ma opcję' -H, --html [= PRZEGLĄDARKA] użyj elinków lub PRZEGLĄDARKI do wyświetlania wyjścia HTML'. Usprawnij swoją odpowiedź, podaj minimalną wersję "man" i wyciąg z man-page. Powiedz też, że nie odpowiada na pytanie OP, aby przekonwertować ** ALL ** lokalnych stron man na HTML lub przecenę. Pozdrawiam – olibre

+0

Istnieje krótszy wiersz polecenia: 'man -H ls', ale zmienna środowiskowa' BROWSER' musi być ustawiona przed: 'export BROWSER = firefox' – olibre