我想man
更有效地使用。我决定尝试--regex
一下。然而:
~$ man --regex -K '.*textdomain.*perl.*'
--Man-- next: Locale::Messages(3pm) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ]
^C
~$ man --regex -K '.*perl.*textdomain.*'
No manual entry for .*perl.*textdomain.*
我提取的源代码(首先查找哪个人打开)会产生空的 grep 结果,但会分别查找单词(textdomain、perl):
~/Documents$ grep '.*textdomain.*perl.*' Locale\:\:libintlFAQ.3pm
~/Documents$ grep '.*perl.*textdomain.*' Locale\:\:libintlFAQ.3pm
在该文件中,perl
(例如第 74 行)位于textdomain
(例如第 120 行)之前。为什么man --regex -K '.*perl.*textdomain.*'
单词顺序颠倒了就找不到了?grep
显示两个序列都不在一行上。实际上如何man --regex -K
运作?.*
是否应该寻找新线路?我想最后一个答案是“这取决于系统”(基于https://stackoverflow.com/questions/11924480/search-in-man-page-for-words-at-the-beginning-of-线)。
在大多数 GNU/Linux 发行版的
man
实现中,默认情况下man-db
搜索是基于行且不区分大小写的(除非您传递/选项)。-I
--match-case
要搜索同时包含
perl
和 且textdomain
区分大小写的手册页,您可以执行以下操作(在 GNU 系统上):perl
进行搜索man -IKw
,返回包含它的手册页的路径,textdomain
在这些文件中进行搜索zgrep
,并将结果路径列表提供给man -l
。脚本
man-pages-with-all-words
可以写成:或者与 POSIX 语法相同
sh
: