例子:
man -awK "typeset"
这已通过管道确认grep
:
search=typeset
man -awK -- "$search" | xargs -I {} sh -c "echo '{}'
man --no-hyphenation --no-justification -- {} | grep -iF -- '$search'"
结果:
/usr/share/man/man1/lcf.1.gz /usr/share/man/man1/memusagestat.1.gz /usr/share/man/man1/mtrace.1.gz /usr/share/man/man1/nm-applet.1.gz /usr/share/man/man1/nm-connection-editor.1.gz /usr/share/man/man1/nroff.1.gz GROFF_ TYPESET TER 环境变量或 -T 命令行选项 GROFF_ TYPESET TER 并且GROFF_TYPESET TER 未设置。 /usr/share/man/man1/tfmtodit.1.gz 要做好数学排版,groff需要font metric /usr/share/man/man1/ptx.1.gz -t, --排版-mode - 未实现 - /usr/share/man/man1/chrt.1.gz /usr/share/man/man1/taskset.1.gz /usr/share/man/man1/chem.1.gz 用于排版化学结构图 [CSTR #122]。 cm.bell-labs.com/netlib/typeset ting/chem.gz⟩ 。它的 README 文件用于 排版化学结构图 [CSTR #122] ⟨http: // /usr/share/man/man1/chacl.1.gz
请注意,前五个结果实际上根本不包含“排版”。其他搜索词的行为类似。
我正在使用 man 2.9.1 运行 Ubuntu 20.04.4 LTS (5.15.0-43-generic)。这似乎也是带有 man 1.6g 的 macOS 12.5 上的一个问题,这让我想知道我是否做错了什么?
man -K
搜索所有内容,包括手册页源文件中的注释。该字符串
typeset
作为 GNU GPL 许可标头的一部分出现在许多 GNU 和其他 GNU-GPL 许可程序中。我没有提供方便的解决方法。但是手册页往往不会有很多评论,所以问题仅限于几句话。
在我的Ubuntu系统上,问题是Gilles 在同一页面上的回答 details。我接受他的回答,因为他在这方面提供了他的专业知识。谢谢你,吉尔斯!
在我的macOS系统上,这也是因为管道手册页仍然包含文档中搜索词中的控制字符,如
man man | sed -n l
.一种解决方案是首先使用 过滤掉控制字符
col -b
,这会删除格式:另一种解决方案是使用
MAN_KEEP_FORMATTING=1
和管道 toul
,它保留格式:(有关
ul
解决方案的更多详细信息:指定— 如MAN_KEEP_FORMATTING=1
所示 —man man
对于 Ubuntu 20.04.4 似乎没有必要,但它似乎对 macOS 是必需的,并且它可能也适用于其他操作系统,因此只需将其包含为当然。Stéphane Chazelas在我的相关问题中详细介绍了另一种解决方案,但该解决方案仅适用于 Ubuntu,不适用于 macOS。)在任何一种情况下,唯一可靠的*解决方案似乎是使用 grep 执行第二遍过滤:
* 假设您的搜索词不包含超过一行的单词(很可能只是一行末尾的单词,下一行开头的下一个单词)。如果是这样,也许过滤器使用
pcre2grep -M 'search\s+term
代替。如果您想要更详细的代码解决方案来搜索手册页并突出显示结果,同时保留手册页格式(颜色/等),请参阅我的相关问题。