我发现从命令行在手册页中 grep 查找文本(例如特定选项)很有用。
但是,grep
在手册页上操作时,它无法按预期工作,如下所示,其中模式"-f"
仅匹配"-"
而模式"--file"
不匹配任何内容 ( alias grep='grep --color=always'
):
nlykkei-mbp:~ nlykkei$ alias grep
alias grep='grep --color=always'
nlykkei-mbp:~ nlykkei$ man grep | grep -e "-f"
[-e pattern] [-f file] [--binary-files=value] [--color[=when]]
-F, --fixed-strings
-f file, --file=file
-h, --no-filename
--binary-file=without-match option.
-L, --files-without-match
-l, --files-with-matches
--binary-files=value
and the behaviour of the -f flag when used with an empty pattern file is
nlykkei-mbp:~ nlykkei$ man grep | grep -e "--file"
nlykkei-mbp:~ nlykkei$ echo "--file" | grep -e "--file"
--file
nlykkei-mbp:~ nlykkei$ ▒
相反,匹配管道文本echo
可以按预期工作,那么这与手册页的“不可见”格式有关吗?手册页中的 grep 文本是否可靠?
注意:我知道man -k
和man -K
,但这些并不能完全解决我想要实现的目标。
答案1
解决方案 1:为 man 使用特定的conf文件
一个配置文件.man.raw.conf
NROFF /usr/bin/groff -mandoc -Tlatin1 -P-u -P-b
使用的一个例子man
MyMAC:tmp e444$$ man -C .man.raw.conf grep | grep -e --file
-f file, --file=file
-L, --files-without-match
-l, --files-with-matches
解决方案 2:使用colcrt -
MyMAC:tmp e444$ man grep | colcrt - | grep -e --file
-f file, --file=file
-L, --files-without-match
-l, --files-with-matches
ps 1: 没有-
colcrt 添加更多垃圾
ps 2:这个问题和答案在linux上没有意义,因为行为不一样。
答案2
你应该不是在手册页上使用 grep。手册页经过编码(不是简单的英语),内容与您要搜索的句子不匹配。
假设该程序man
用于less
显示手册页有一种方法可以借助 进行搜索less
。继续阅读。
要确认您的手册页是通过less
键入man grep
(或其他命令)显示的,请按进入在查看手册页时,仅按 键H。如果小于,则标题帮助呈现的页面标题为:Less 命令总结。一旦你确认了这一点。您应该知道它less
能够自行进行搜索(按q到quit
显示的帮助页面(如果需要),使用 键/。如果您按:
/-f
然后按 Enter,您将看到-f
突出显示的内容(按n
将移至下一个匹配项)。
或者,如果您只需要查看与字符串匹配的行,请执行以下操作:
&-f
如果您需要从命令行激活此类搜索,请执行以下操作:
$ LESS=+'/-f' man grep