23

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

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

4

8 回答 8

33

是的......要转换其中一个,比如说,人的人:

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

如果您想“全部安装在您的 PC 上”,您只需遍历它们即可。对于不同的输出(例如文本),使用不同的“设备”(-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
于 2012-11-17T19:28:59.447 回答
9

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

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

在无法访问 Internet 且在线手册页服务不可用的 Intranet中,将此文件放在您的静态 HTTP 服务器(例如 Nginx)中并启用自动索引是一个不错的选择,在此浏览和 Ctrl+F 可能会很方便。

于 2016-07-06T18:43:45.787 回答
2
man -Hfirefox ls

直接在Firefox中打开“ls”的手册页

于 2017-01-23T20:45:04.337 回答
1

我建议尝试Pandoc

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

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

它还可以生成许多其他格式,例如 Markdown,当您不确定要提交哪种格式时,这很好。

有评论说 Pandoc cannot convert from man,但这似乎已经过时了。man当前版本(2.13)在转换为html我的示例时做得不错。

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

(有一个现有的答案也提到了 Pandoc,我考虑将我的信息编辑到其中,但我想说更多关于我使用它的经验。)

于 2021-04-29T02:33:10.527 回答
1

使用代码而不是应用程序完成此任务的最佳方法可能是使用 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'
于 2019-10-28T11:22:41.840 回答
0

这对我有用

man --html=cat gcc > gcc.htm
于 2014-10-05T22:00:07.357 回答
0

为了转换我使用的男人:

zcat "/usr/share/man/man1/${PROGRAM}.1.gz" | 男子气概> “out.html”

为了将 man 直接显示为 html,我使用:

阿曼“${程序}”

输出如下所示:

截屏

于 2020-08-04T00:52:02.603 回答
-1

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

于 2012-11-17T19:43:11.240 回答