shell-style pattern matching
Globbing characters (wildcards) are special characters used to perform pattern
matching of pathnames and command arguments in the
shells as well as
the C library functions
. A glob
pattern is a word containing one or more unquoted
’ characters, or “[..]”
Globs should not be confused with the more powerful regular expressions used by
programs such as
. While there
is some overlap in the special characters used in regular expressions and
globs, their meaning is different.
The pattern elements have the following meaning:
- Matches any single character.
- Matches any sequence of zero or more characters.
- Matches any of the characters inside the brackets. Ranges of characters
can be specified by separating two characters by a
-’ (e.g. “[a0-9]”
matches the letter ‘a’ or any digit). In order to represent
itself, a ‘
-’ must either be quoted
or the first or last character in the character list. Similarly, a
]’ must be quoted or the first
character in the list if it is to represent itself instead of the end of
the list. Also, a ‘
!’ appearing at
the start of the list has special meaning (see below), so to represent
itself it must be quoted or appear later in the list.
Within a bracket expression, the name of a
character class enclosed in
‘[:’ and ‘:]’ stands for the list of all
characters belonging to that class. Supported character classes:
These match characters using the macros specified in
so on. A character class may not be used as an endpoint of a range.
- Like [..], except it matches any character not inside the brackets.
- Matches the character following it verbatim. This is useful to quote the
special characters ‘
\’ such that they lose their
special meaning. For example, the pattern “\\\*\[x]\?”
matches the string “\*[x]?”.
Note that when matching a pathname, the path separator
’, is not matched by a
’, character or by a
“[..]” sequence. Thus,
would not match either.
In early versions of UNIX
, the shell did not do pattern
expansion itself. A dedicated program,
, was used to perform the
expansion and pass the results to a command. In
Version 7 AT&T UNIX
, with the introduction
of the Bourne shell, this functionality was incorporated into the shell