Can anyone explain why '-' needs escaping in the following. What special meaning does it have outside of []? $ echo 'a-b' | grep 'a-b' a-b $ echo 'a-b' | grep '-b' Usage: grep [OPTION]... PATTERN [FILE]... Try `grep --help' for more information. $ echo 'a-b' | grep '\-b' a-b