如何转储手册页?


45

我该如何“整理”一个手册页,就像我将“整理”一个文件以获取内容转储一样?

Answers:


40

首先,man文件通常只是文件系统中某处的gzip压缩文本文件。由于您的里程数会有所不同,并且您可能想要的是man给您的经过处理和格式化的版本,而不是源文件,因此您可以使用该man工具将其丢弃。通过查看man man,我发现您可以使用以下-P标志更改用于查看手册页的程序:

man -P cat command_name

man当您用管道传输输出而不是在屏幕上查看输出时,它也没有什么能自动检测到的,因此,如果要使用其他方法进行处理,则可以直接跳到该步骤,如下所示:

man command_name | grep search_string

或转储到文件:

man command_name > formatted_man_page.txt

1
使用-P不能使输出文件清晰可读。它的所有ctrl-H字符都乱写了。我曾经做过男人cmd>!man.cmd并打开man.cmd并执行'%s / ^ H .// g'以删除表示粗体和斜体的烦人的控制字符。但是,当还有其他特殊字符时,这仍然存在一些问题。我仍在寻找一种避免手动编辑输出的好方法。
Chan Kim

@ChanKim您在做错事或采用了一些非标准的配置,因为这里的两种方法实际上都能产生纯文本格式的干净输出,而没有多余的控制字符。您确定没有man别名或强制将Shell与正常功能区分开的某些东西man吗?
Caleb

1
@Caleb,我确认OP的问题。CentOS 6.7版(最终版),/ usr / bin / man gcc> j,编辑“ j”,所有ctrl-H都在其中。我找到的最佳答案是在commandlinefu.com/commands/view/2417/…–
查尔斯·罗斯

1
man command_name > formatted_man_page.txt将导致某些单词重复。
Zizii Wong

52

要获取ASCII手册页文件,而无需在下划线和下划线的烦人尝试下进行奇怪的加粗处理:

man ksh | col -b > ksh.txt

6
您值得更多投票
Labo

2
嗨,为什么人工输出的管道包含重复的字符?以及col -b如何将其删除?提前致谢。
saurabheights

2
@saurabheights-男人尝试使用下划线,粗体文本以及其他一些带有退格键,重复字符,转义序列等的东西。作为终端上的文本。我还没有阅读col的源代码,但是它可能只是逐字节检查stdin,并且不将退格键等传递给stdout。col的手册页读起来就像有人专门为过滤man输出而写的。
Bruce Ediger

1
好的,那很有道理。此类字符(隐藏)可能导致重复的字符。谢谢布鲁斯。
saurabheights

您真的应该得到模式的支持。栏是否“ col”?
代数

24

手册页通常是经过troff预处理的文件,您可以使用以下方式进入纯文本格式:

groff -t -e -mandoc -Tascii manpage.1 | col -bx > manpage.txt

groff是的包装器troff

更多信息在这里

您可能需要先使用gzip解压缩手册页文件,并且输出中仍然会有大量格式化信息。


4
+1讨论groff / troff和手册页的格式
lgeorget14年

11

我一直都这样做。此命令行让我很高兴:

man man | col -bx > man.txt

col -b删除退格键。

col -bx还将制表符替换为空格,这是我的强烈偏好。

如果我想在阅读时将文本格式设置为我喜欢的宽度,则可以将命令更改为此:

MANWIDTH=10000 man man | col -bx > man.txt

man man | col -bx > man.txt为我工作。谢谢。
JaredH '17

6

只需使用man命令-您就可以将输出通过管道cat传输到其他文件中,就像处理文件一样。


1
我喜欢简单。
JoelSjögren'13

3

如果您只想要cat联机帮助页,则可以将其通过管道发送至cat

man ls | cat

如果要将其内容转储到文件中:

man ls > ls_manpage_dump.txt
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.