有没有办法将所有 Linux 手册页转换为纯文本、html 或 markdown?
我需要对系统上安装的每个 man 文件执行此操作。
是的......要转换其中一个,比如说,人的人:
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
使用该命令可以列出所有可用的手册页名称,man -k ''
这可能比原始手册页数据文件更好;同时,man 命令有一个选项,可以生成给定手册页部分和名称的 HTML。因此,下面的 bash 脚本会将 Linux 中所有可用的手册页转换为 HTML 文件:find
zcat
-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 可能会很方便。
man -Hfirefox ls
直接在Firefox中打开“ls”的手册页
我建议尝试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,我考虑将我的信息编辑到其中,但我想说更多关于我使用它的经验。)
使用代码而不是应用程序完成此任务的最佳方法可能是使用 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'
这对我有用
man --html=cat gcc > gcc.htm
今天是你的幸运日。有人已经为你做了这件事。 http://linux.die.net/