似乎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指数所有手册页中的所有单词均按格式设置,但这仍然会
- 占用大量空间,并且
- 需要很多时间来生成