Any character that appears in a pattern, other than the special pattern characters described below, matches itself. The NUL character may not occur in a pattern. The special pattern characters must be quoted if they are to be matched literally.
The special pattern characters have the following meanings:
*
?
[...]
LC_COLLATE shell variable,
if set.
For example, in the default C locale, '[a-dx-z]' is equivalent to
'[abcdxyz]'. Many locales sort characters in dictionary order, and in
these locales '[a-dx-z]' is typically not equivalent to '[abcdxyz]';
it might be equivalent to '[aBbCcDdxXyYz]', for example. To obtain
the traditional interpretation of ranges in bracket expressions, you can
force the use of the C locale by setting the LC_COLLATE or
LC_ALL environment variable to the value 'C'.
Within '[' and ']', character classes can be specified
using the syntax
[:class:], where class is one of the
following classes defined in the POSIX 1003.2 standard:
alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigitA character class matches any character belonging to that class. The
word character class matches letters, digits, and the character
'_'.
Within '[' and ']', an equivalence class can be
specified using the syntax [=c=], which
matches all characters with the same collation weight (as defined
by the current locale) as the character c.
Within '[' and ']', the syntax [.symbol.]
matches the collating symbol symbol.
If the extglob shell option is enabled using the shopt
builtin, several extended pattern matching operators are recognized.
In the following description, a pattern-list is a list of one
or more patterns separated by a '|'.
Composite patterns may be formed using one or more of the following
sub-patterns:
?(pattern-list)
*(pattern-list)
+(pattern-list)
@(pattern-list)
!(pattern-list)