Ubuntu 14.04
man 版本 2.6.7.1
gedit 版本 3.10.4
我正在整理一份完整的手册页文档,目前是 txt 文件,希望最终能找到格式合理的转换器后能将其整理成 pdf 文件,最终目标是能够将其作为可更新的替代资源提供给社区(我当然已经看到足够多的关于它的问题)。我遇到的问题是,我用来处理手册文件的命令返回的字符至少超出了 gedit 的编码范围(尚未尝试使用其他编辑器)。以下是我迄今为止的流程:
alias manGet="sudo apt-get update && sudo apt-get upgrade;man -a /bin/* > binMan.txt && man -a /sbin/* > sbinMan.txt;cat binMan.txt sbinMan.txt > manAll.txt;gedit manAll.txt"
manGet
一旦进入 gedit,编码问题似乎就会出现在分页符附近,在那里它会显示一长串不可显示的字符。因此,本质上有两个问题:
1) 如果可能的话,我该如何更新字符编码以显示这些文件? 2) 如果不可能,我该如何下载支持它们的编码,或者有选择地从文件中过滤它们?
如您能提供任何帮助,我将不胜感激。
注意:我下载并安装了unicode,以为我可以使用它来找到合适的编码,但没有成功(我个人认为我只是还不知道如何使用它)
答案1
有几件事。让我们从捕获所有这些手册页的方法开始。让man
我们用man -k .
— 我们从一个较短的例子开始:
$ man -k rmdir
rmdir (1) - remove empty directories
rmdir (1posix) - remove directories
rmdir (2) - delete a directory
rmdir (3posix) - remove a directory
我们需要解析该列表。我们需要命令和括号中的部分。我们可以awk
使用它的参数来拆分它-F
(我们只需告诉它分隔符是什么字符),另外,为了避免弄乱 Bash 变量,我们awk
也可以创建下一个命令。
在开始之前,我们需要知道要运行什么命令。如果安装了,则man
可以生成 HTML 文件( )。这可能是目前对您来说最好的想法,因为它保留了相当简单的格式。如今它也相当普遍。我们用它来告诉它将 HTML 呈现给 cat 命令(它需要浏览器)。这里有 部分(有关这些内容的更多信息,请参阅)。groff
sudo apt-get install groff
-Hcat
1
man man
man -Hcat 1 rmdir
因此,为了使这一切恢复原状,让我们用 awk 分割输出man -k
,创建命令并在一行中执行它:
man -k . | awk -F '[ ()]' '{print "man -Hcat",$3,$1," > "$1"."$3".html" | "/bin/sh"}'
这将创建一个 HTML 文件每一个手册页。这将需要很长时间才能完成,因此我建议只使用示例进行测试,rmdir
因此我建议从以下位置开始rmdir
:
man -k rmdir | awk -F '[ ()]' '{print "man -Hcat",$3,$1," > "$1"."$3".html" | "/bin/sh"}'
这样我就得到了 4 个 HTML 文件(rmdir.1.html
、rmdir.1posix.html
和)。要将它们变成一本书,我强烈建议您查看rmdir.2.html
。这既是命令行应用程序,也是图形应用程序。我建议您先习惯图形版本。rmdir.3posix.html
htmldoc
就这样,所有的手册页都已排序,并带有目录(如果您需要的话),格式保存在一个漂亮的文档输出中(HTML 或 PDF)。
答案2
这样做有很多严重的问题。我注意到,当我运行它时,它会导致终端每秒吐出大量错误。更好的方法是这样做:
for binary in $(ls /bin); do man -a $binary >> ~/binMan.txt; done
不过,我认为如果为每个程序创建一个文件会更好,在这种情况下可以这样做:
for binary in $(ls /bin); do man -a $binary > ~/$binary.txt; done