155 lines
4.0 KiB
Groff
155 lines
4.0 KiB
Groff
.\" $NetBSD: glob.7,v 1.3 2011/01/19 00:33:10 uwe Exp $
|
|
.\"
|
|
.\" $OpenBSD: glob.7,v 1.3 2009/12/26 15:24:54 schwarze Exp $
|
|
.\"
|
|
.\" Copyright (c) 2009 Todd C. Miller <Todd.Miller@courtesan.com>
|
|
.\"
|
|
.\" Permission to use, copy, modify, and distribute this software for any
|
|
.\" purpose with or without fee is hereby granted, provided that the above
|
|
.\" copyright notice and this permission notice appear in all copies.
|
|
.\"
|
|
.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
.\"
|
|
.Dd November 30, 2010
|
|
.Dt GLOB 7
|
|
.Os
|
|
.Sh NAME
|
|
.Nm glob
|
|
.Nd shell-style pattern matching
|
|
.Sh DESCRIPTION
|
|
Globbing characters
|
|
.Pq 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.
|
|
.Pp
|
|
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.
|
|
.Pp
|
|
The pattern elements have the following meaning:
|
|
.Bl -tag -width Ds
|
|
.It Li \&?
|
|
Matches any single character.
|
|
.It Li \&*
|
|
Matches any sequence of zero or more characters.
|
|
.It 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.
|
|
.Pp
|
|
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:
|
|
.Bl -column ".Li xdigit" ".Li xdigit" ".Li xdigit" -offset indent
|
|
.It Li "alnum" Ta Li "cntrl" Ta Li "lower" Ta Li "space"
|
|
.It Li "alpha" Ta Li "digit" Ta Li "print" Ta Li "upper"
|
|
.It Li "blank" Ta Li "graph" Ta Li "punct" Ta Li "xdigit"
|
|
.El
|
|
.Pp
|
|
These match characters using the macros specified in
|
|
.Xr ctype 3 .
|
|
A character class may not be used as an endpoint of a range.
|
|
.It Li [!..]
|
|
Like
|
|
.Li [..] ,
|
|
except it matches any character not inside the brackets.
|
|
.It 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
|
|
.Pp
|
|
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,
|
|
.Pa /usr/*/*/X11
|
|
would match
|
|
.Pa /usr/X11R6/lib/X11
|
|
and
|
|
.Pa /usr/X11R6/include/X11
|
|
while
|
|
.Pa /usr/*/X11
|
|
would not match either.
|
|
Likewise,
|
|
.Pa /usr/*/bin
|
|
would match
|
|
.Pa /usr/local/bin
|
|
but not
|
|
.Pa /usr/bin .
|
|
.Sh SEE ALSO
|
|
.Xr fnmatch 3 ,
|
|
.Xr glob 3 ,
|
|
.Xr re_format 7
|
|
.Sh HISTORY
|
|
In early versions of
|
|
.Ux ,
|
|
the shell did not do pattern expansion itself.
|
|
A dedicated program,
|
|
.Pa /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.
|