Recomiendo probar Pandoc:
$ pandoc --from man --to html < input.1 > output.html
Produce HTML que es tanto legible como editable, siendo este último importante para mi caso de uso.
También puede producir muchos otros formatos, como Markdown, lo cual es bueno cuando aún no está seguro de con qué formato desea comprometerse.
Hay un comentario sobre la pregunta que dice que Pandoc no puede convertir desde man
, pero eso parece estar desactualizado. La versión actual (2.13) hace un trabajo decente al convertir man
a html
para mi ejemplo.
Además, mientras que la respuesta aceptada sugiere usar groff -mandoc -Thtml
, eso no hizo un trabajo tan bueno para mí como Pandoc. Específicamente, quiero convertir la antigua página de manual de Flex-2.5.5 a html. groff
(versión 1.22.4) desafortunadamente destrozó todos los ejemplos de código (sin sangría, sin fuente de ancho fijo), haciéndolos difíciles de leer, mientras que Pandoc los trajo como pre
secciones. Además, el groff
la salida está llena de estilos en línea explícitos, mientras que la salida de Pandoc no usa CSS en absoluto, lo que la convierte en un mejor punto de partida para la edición.
(Hay una respuesta existente que también menciona a Pandoc, y consideré editar mi información en ella, pero quería decir más sobre mi experiencia al usarla).
Usa el comando man -k ''
podría enumerar todos los nombres de páginas de manual disponibles, lo que podría ser mejor que find
y zcat
archivos de datos de páginas man originales; Mientras tanto, el comando del hombre tiene una opción -T, --troff-device[=DEVICE]
que puede generar HTML de la sección y el nombre de la página del manual. Entonces, el siguiente script bash viene a convertir todas las páginas de manual disponibles en su Linux en archivos 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
En una intranet sin acceso a Internet, el servicio de páginas de manual en línea no está disponible, coloque estos archivos en su servidor HTTP estático como Nginx con autoindex activado es una buena opción, donde navegar y Ctrl+F pueden ser convenientes.
Sí... Para convertir uno de ellos, digamos, hombre de hombre:
zcat /usr/share/man/man1/man.1.gz | groff -mandoc -Thtml
Si desea 'todos instalados en su PC', simplemente itere a través de ellos. Para una salida diferente (texto, por ejemplo), use un 'dispositivo' diferente (el argumento -T).
Por si acaso... si la 'iteración' fuera el verdadero problema, puedes usar:
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