如何转储手册页?

Lan*_*nes 62 man

我怎样才能“cat”一个手册页,就像我会“cat”一个文件来获取内容的转储?

Bru*_*ger 77

要获得一个 ASCII 手册页文件,没有烦人的退格/下划线尝试下划线,以及加粗的奇怪序列:

man ksh | col -b > ksh.txt
Run Code Online (Sandbox Code Playgroud)

  • 你值得更多赞 (9认同)
  • @saurabheights - man 试图做下划线和粗体文本,也许还有其他一些带有退格、重复字符、转义序列等的东西。作为终端上的文本。我没有读过 col 源代码,但它可能只是逐字节检查 stdin 并且不会将退格符等传递给 stdout。col 的手册页读起来就像有人专门为过滤 man 输出而编写的。 (4认同)
  • 嗨,为什么人工管道输出包含重复的字符?和 col -b 如何删除它?提前致谢。 (2认同)
  • 作为下面提到的另一个答案,将 `x` 添加到 `col` 以删除输出中的空格/制表符组合:`man ksh | col -bx > ksh.txt` (2认同)

Cal*_*leb 53

首先,man 文件通常只是文件系统中某处的 gzip 文本文件。由于您的 milage 会因找到它们而有所不同,并且您可能想要 man 给您的已处理和格式化的版本而不是源,因此您可以使用该man工具转储它们。通过查看man man,我看到您可以更改用于查看带有-P标志的手册页的程序,如下所示:

man -P cat command_name
Run Code Online (Sandbox Code Playgroud)

man当您通过管道传输输出而不是在屏幕上查看它时,自动检测它也毫无价值,因此如果您打算用其他东西处理它,您可以直接跳到该步骤,如下所示:

man command_name | grep search_string
Run Code Online (Sandbox Code Playgroud)

或转储到文件:

man command_name > formatted_man_page.txt
Run Code Online (Sandbox Code Playgroud)

  • 使用 -P 不会使输出文件清晰易读。它潦草地写着所有的 ctrl-H 字符。我以前做 man cmd >! man.cmd 并打开 man.cmd 并执行 '%s/^H.//g' 以删除用于表示粗体和斜体的烦人的控制字符。但是当有其他特殊字符时,这仍然存在一些问题。我仍在寻找一种避免手动编辑输出的好方法。 (3认同)
  • `man command_name > formatted_man_page.txt` 会导致一些单词重复。 (2认同)

Eig*_*ony 29

手册页通常是troff预处理过的文件,您可以通过以下方式访问纯文本,

groff -t -e -mandoc -Tascii manpage.1 | col -bx > manpage.txt
Run Code Online (Sandbox Code Playgroud)

groff是 的包装器troff

更多信息在这里

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

  • +1 讨论 groff/troff 和手册页的格式 (5认同)

小智 16

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

man man | col -bx > man.txt
Run Code Online (Sandbox Code Playgroud)

col -b 删除退格。

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

如果我希望在阅读时将文本格式化为我喜欢的宽度,那么我将命令更改为:

MANWIDTH=10000 man man | col -bx > man.txt
Run Code Online (Sandbox Code Playgroud)


Tom*_*omH 6

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