MirBSD manpage: glob(7)
GLOB(7) BSD Reference Manual GLOB(7)
glob - shell-style pattern matching
Globbing characters (wildcards) are special characters used to perform
pattern matching of pathnames and command arguments in the mksh(1),
csh(1), and sh(1) shells as well as the C library functions fnmatch(3)
and glob(3). A glob pattern is a word containing one or more unquoted '?'
or '*' characters, or "[..]" sequences.
Globs should not be confused with the more powerful regular expressions
used by programs such as grep(1). While there is some overlap in the spe-
cial 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 en-
closed in '[:' and ':]' stands for the list of all characters be-
longing to that class. Supported character classes:
alnum cntrl lower space
alpha digit print upper
blank graph punct xdigit
These match characters using the macros specified in ctype(3). A
character class may not be used as an endpoint of a range.
Note that character classes may not be universally supported.
[!..] Like [..], except it matches any character not inside the brack-
ets.
\ Matches the character following it verbatim. This is useful to
quote the special characters '?', '*', '[', and '\' 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 '?', or '*', character or by a "[..]" sequence. Thus,
/usr/*/*/X11 would match /usr/X11R6/lib/X11 and /usr/X11R6/include/X11
while /usr/*/X11 would not match either. Likewise, /usr/*/bin would match
/usr/local/bin but not /usr/bin.
fnmatch(3), glob(3), re_format(7)
In early versions of UNIX, the shell did not do pattern expansion itself.
A dedicated program, /etc/glob, was used to perform the expansion and
pass the results to a command. In Version 7 AT&T UNIX, with the introduc-
tion of the Bourne shell, this functionality was incorporated into the
shell itself.
MirBSD #10-current September 4, 2020 1