Je recommande d'essayer Pandoc :
$ pandoc --from man --to html < input.1 > output.html
Il produit du HTML qui est à la fois lisible et modifiable, ce dernier étant important pour mon cas d'utilisation.
Il peut également produire de nombreux autres formats tels que Markdown, ce qui est pratique lorsque vous ne savez pas encore dans quel format vous souhaitez vous engager.
Il y a un commentaire sur la question qui dit que Pandoc ne peut pas convertir à partir de man
, mais cela semble dépassé. La version actuelle (2.13) fait un travail décent en convertissant man
à html
pour mon exemple.
De plus, alors que la réponse acceptée suggère d'utiliser groff -mandoc -Thtml
, qui n'a pas fait un aussi bon travail pour moi que Pandoc. Plus précisément, je souhaite convertir l'ancienne page de manuel Flex-2.5.5 en html. groff
(version 1.22.4) a malheureusement mutilé tous les exemples de code (pas d'indentation, pas de police à largeur fixe), les rendant difficiles à lire, tandis que Pandoc les a ramenés en tant que pre
sections. De plus, le groff
la sortie est pleine de styles en ligne explicites, tandis que la sortie Pandoc n'utilise aucun CSS, ce qui en fait un meilleur point de départ pour l'édition.
(Il existe une réponse existante qui mentionne également Pandoc, et j'ai envisagé d'y modifier mes informations, mais je voulais en dire plus sur mon expérience d'utilisation.)
Utilisez la commande man -k ''
pourrait lister tous les noms de pages de manuel disponibles, ce qui pourrait être mieux que find
et zcat
fichiers de données de page de manuel d'origine ; Pendant ce temps, la commande de man a une option -T, --troff-device[=DEVICE]
qui peut générer le code HTML de la section et du nom de la page de manuel donnée. Ainsi, le script bash suivant vient convertir toutes les pages de manuel disponibles dans votre Linux en fichiers 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
Dans un intranet sans accès Internet où le service de pages de manuel en ligne n'est pas disponible, placez ces fichiers dans votre serveur HTTP statique tel que Nginx avec autoindex activé est une bonne option, où parcourir et Ctrl+F peuvent être pratiques.
Oui... Pour convertir l'un d'entre eux, disons, homme d'homme :
zcat /usr/share/man/man1/man.1.gz | groff -mandoc -Thtml
Si vous voulez que "tout soit installé sur votre PC", il vous suffit de les parcourir. Pour une sortie différente (texte, par exemple), utilisez un 'device' différent (l'argument -T).
Juste au cas où... si "l'itération" était le vrai problème, vous pouvez utiliser :
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