将所有Linux手册页转换为text / html或markdown

时间:2012-11-17 19:16:07

标签: html linux unix markdown man

有没有办法将所有Linux手册页转换为纯文本,html或markdown?

我需要为我在系统上安装的每个man文件执行此操作。

7 个答案:

答案 0 :(得分:25)

是的......转换他们中的一个,比如说,男人:

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

如果你想要“安装在你的电脑上的所有东西”,你只需要遍历它们。对于不同的输出(例如文本),请使用不同的“device”(-T参数)。

以防万一......如果'迭代'是真正的问题,你可以使用:

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

答案 1 :(得分:8)

使用命令man -k ''可以列出所有可用的手册页名称,这可能比findzcat原始手册页数据文件更好;同时,man的命令有一个选项-T, --troff-device[=DEVICE],可以生成给定的man-page部分和名称的HTML。因此,以下bash脚本将将Linux中可用的所有手册页转换为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

在没有online man-pages service不可用的互联网访问权限的Intranet中,将此文件放在静态HTTP服务器(例如Nginx,使用自动索引)中是一个不错的选择,其中browse和Ctrl + F可能很方便。

答案 2 :(得分:1)

man -Hfirefox ls

直接在firefox中打开“ls”的联机帮助页

答案 3 :(得分:0)

今天是你的幸运日。有人已经为你做了这件事。 http://linux.die.net/

答案 4 :(得分:0)

使用代码而不是应用程序来完成此操作的最佳方法可能是使用pandoc。 https://pandoc.org

您甚至可以在不同的标记之间进行内联字符串转换,例如在python pando中:

import pypandocenter 
# With an input file: it will infer the input format from the filename
output = pypandoc.convert_file('somefile.md', 'rst')

# ...but you can overwrite the format via the `format` argument:
output = pypandoc.convert_file('somefile.txt', 'rst', format='md')

# alternatively you could just pass some string. In this case you need to
# define the input format:
output = pypandoc.convert_text('#some title', 'rst', format='md')
# output == 'some title\r\n==========\r\n\r\n'

答案 5 :(得分:0)

对于 vert依我使用的男人,

zcat $(man --path 1“ $ {command} | roffit>” $ {output}“ 2> “ / dev / null”

但是更完整的是,我使用html作为展示的男人:

oman“ $ {command}”

输出如下:

Screenshot

答案 6 :(得分:0)

我建议尝试Pandoc

$ pandoc --from man --to html < input.1 > output.html

它生成的 HTML 既可读又可编辑,后者对我的用例很重要。

它还可以生成许多其他格式,例如 Markdown,这在您不确定要提交哪种格式时非常有用。

对这个问题的评论说 Pandoc 不能从 man 转换,但这似乎已经过时了。对于我的示例,当前版本 (2.13) 在将 man 转换为 html 方面做得不错。

此外,虽然公认的答案建议使用 groff -mandoc -Thtml,但对我来说,它的效果不如 Pandoc。具体来说,我想将 old Flex-2.5.5 man page 转换为 html。 groff(1.22.4 版)不幸地将所有代码示例弄乱了(没有缩进,没有固定宽度字体),使它们难以阅读,而 Pandoc 将它们作为 pre 部分带过来。此外,groff 输出充满了明确的内联样式,而 Pandoc 输出根本不使用 CSS,使其成为更好的编辑起点。

(现有的 answer 也提到了 Pandoc,我考虑将我的信息编辑到其中,但我想多谈谈我使用它的体验。)