处理手册页搜索

处理手册页搜索

似乎man -K不搜索格式化输出,而是搜索标记源。例如

 man -K warranties

给出了许多不包含字符串的联机帮助页warranties,例如 xcalc(1)。此外,搜索包含特殊字符的字符串非常困难:

 man -K 7 '\f'

给出了很多不包含的页面\f

 man -K 7 '\\f'

似乎没有显示误报,但它也没有显示包含字符串 的 ascii(7) \f

我该如何解决这个问题?

答案1

根据Linuxman-manual,您的第一个示例将搜索文字\f,您可以在大多数更改字体的手册页中找到它,例如,

The international counterpart of ASCII is known as ISO 646.
.LP
The following table contains the 128 ASCII characters.
.LP
C program \f(CW\(aq\eX\(aq\fP escapes are noted.
.if t \{\
.ft CW
\}
.TS
l l l l l l l l.

其中显示了ascii(7)Debian 3.44-1 软件包中manpages.该文件不包含其他实例\f,并且没有一个\\f

由于 FreeBSDman缺乏-K选项,并且 OSXascii.7没有使用字体切换\f,您可能指的是 Linux。 Linuxman程序支持正则表达式——作为一个选项--regex。默认情况下,它不使用正则表达式。

既然你正在寻找格式化的 \f,您应该查找生成该字符对的标记。在 中ascii.7,该行显示

014   12    0C    FF  '\f' (form feed)        114   76    4C    L

是由

012     10      0A      LF  \(aq\en\(aq (new line)      112     74      4A      J

也就是说,它使用 groff 宏\en,您可以搜索:

man -K 7 '\en'

并获得更短的输出(在我的 Debian 7 上为 5811 行,而在我的 Debian 7 上为 57322 行)。仅页眉/页脚行就足以在此处显示结果:

ASCII(7)                    Linux Programmer's Manual                    ASCII(7)
Linux                               2009-02-12                           ASCII(7)
COPY(7)                  PostgreSQL 9.1.22 Documentation                  COPY(7)
PostgreSQL 9.1.22                   2016-05-27                            COPY(7)
CPUSET(7)                   Linux Programmer's Manual                   CPUSET(7)
Linux                               2008-11-12                          CPUSET(7)
GITCORE-TUTORIAL(7)                 Git Manual                GITCORE-TUTORIAL(7)
Git 1.7.10.4                        03/19/2016                GITCORE-TUTORIAL(7)
GROFF_CHAR(7)                                                       GROFF_CHAR(7)
Groff Version 1.21                 25 June 2012                     GROFF_CHAR(7)
GROFF_MDOC(7)          BSD Miscellaneous Information Manual         GROFF_MDOC(7)
GROFF_TRACE(7)                                                     GROFF_TRACE(7)
Groff Version 1.21                 25 June 2012                    GROFF_TRACE(7)
MAN(7)                      Linux Programmer's Manual                      MAN(7)
Linux                               2012-08-05                             MAN(7)

这当然取决于了解相关标记(并且可能有不同的表达同一事物的方式)。查看标记的原因man是它不能依赖于能够搜索格式化的手册页。

不久前,catman存储格式化手册页的目录很常见,因为

  • 格式化手册页很慢,并且
  • 一些供应商没有分发格式化的手册页(或者某些供应商,例如 Sun,以非 nroff 形式提供标记,使事情变得复杂)

一个人可以做一个KWIC指数所有手册页中的所有单词均按格式设置,但这仍然会

  • 占用大量空间,并且
  • 需要很多时间来生成

相关内容