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
쉘 내장에 대한 매뉴얼 페이지를 찾으려면 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
의 complete
섹션 과 섹션을 확인하십시오 man bash
.