q wildcards are special characters used to perform pattern matching of pathnames and command arguments in the .Xr csh 1 , .Xr ksh 1 , and .Xr sh 1 shells as well as the C library functions .Xr fnmatch 3 and .Xr glob 3 . A glob pattern is a word containing one or more unquoted .Ql ? or .Ql * characters, or .Dq Li [..] sequences.
p Globs should not be confused with the more powerful regular expressions used by programs such as .Xr grep 1 . While there is some overlap in the special characters used in regular expressions and globs, their meaning is different.
p The pattern elements have the following meaning: l -tag -width Ds t Li ? Matches any single character. t Li * Matches any sequence of zero or more characters. t Li [..] Matches any of the characters inside the brackets. Ranges of characters can be specified by separating two characters by a .Ql - (e.g.\& .Dq Li [a0-9] matches the letter .Sq a or any digit). In order to represent itself, a .Ql - must either be quoted or the first or last character in the character list. Similarly, a .Ql ] 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 .Ql ! 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.
p Within a bracket expression, the name of a .Em character class enclosed in .Ql [: and .Ql :] stands for the list of all characters belonging to that class. Supported character classes: l -column ".Li xdigit" ".Li xdigit" ".Li xdigit" -offset indent t Li "alnum" Ta Li "cntrl" Ta Li "lower" Ta Li "space" t Li "alpha" Ta Li "digit" Ta Li "print" Ta Li "upper" t Li "blank" Ta Li "graph" Ta Li "punct" Ta Li "xdigit" .El
p These match characters using the macros specified in .Xr ctype 3 . A character class may not be used as an endpoint of a range. t Li [!..] Like .Li [..] , except it matches any character not inside the brackets. t Li \e Matches the character following it verbatim. This is useful to quote the special characters .Ql ? , .Ql * , .Ql [ , and .Ql \e such that they lose their special meaning. For example, the pattern .Dq Li \e\e\e*\e[x]\e? matches the string .Dq \e*[x]? . .El
p Note that when matching a pathname, the path separator .Ql / , is not matched by a .Ql ? , or .Ql * , character or by a .Dq Li [..] sequence. Thus,
a /usr/*/*/X11 would match
a /usr/X11R7/include/X11 while
a /usr/*/X11 would not match either. Likewise,
a /usr/*/bin would match
a /usr/bin . .Sh SEE ALSO .Xr fnmatch 3 , .Xr glob 3 , .Xr re_format 7 .Sh HISTORY In early versions of x , the shell did not do pattern expansion itself. A dedicated program,
a /etc/glob , was used to perform the expansion and pass the results to a command. In .At v7 , with the introduction of the Bourne shell, this functionality was incorporated into the shell itself.