尝试在macOS上grep手册页时遇到奇怪的行为。例如,Bash手册页显然出现了以下字符串NAME
:
$ man bash | head -5 | tail -1
NAME
如果我为grep name
获得了结果,但是如果我为grep获得NAME
,则不会:
$ man bash | grep 'NAME'
$ man bash | grep NAME
我尝试了其他我知道的大写单词,搜索SHELL
没有BASH
结果,而搜索了结果。
这里发生了什么?
更新:感谢您提供所有答案!我认为值得添加我遇到的环境。我想编写一个bash函数进行包装,man
并且在尝试查找内置shell的手册页的情况下,跳至Bash手册页的相关部分。也许有更好的方法,但是这是我目前所拥有的:
man () {
case "$(type -t "$1")" in
builtin)
local pattern="^ *$1"
if bashdoc_match "$pattern \+[-[]"; then
command man bash | less --pattern="$pattern +[-[]"
elif bashdoc_match "$pattern\b"; then
command man bash | less --pattern="$pattern[[:>:]]"
else
command man bash
fi
;;
keyword)
command man bash | less --hilite-search --pattern='^SHELL GRAMMAR$'
;;
*)
command man "$@"
;;
esac
}
bashdoc_match() {
command man bash | col -b | grep -l "$1" > /dev/null
}
man bash | grep NAME
可以正常工作。
help
命令获取其信息。
help
结果遗漏了太多。例如,查看help complete
vs中的complete
部分man bash
。