summaryrefslogtreecommitdiff
path: root/usr/src/man/man7/fnmatch.7
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/man/man7/fnmatch.7')
-rw-r--r--usr/src/man/man7/fnmatch.7341
1 files changed, 341 insertions, 0 deletions
diff --git a/usr/src/man/man7/fnmatch.7 b/usr/src/man/man7/fnmatch.7
new file mode 100644
index 0000000000..51b73312d1
--- /dev/null
+++ b/usr/src/man/man7/fnmatch.7
@@ -0,0 +1,341 @@
+.\"
+.\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for
+.\" permission to reproduce portions of its copyrighted documentation.
+.\" Original documentation from The Open Group can be obtained online at
+.\" http://www.opengroup.org/bookstore/.
+.\"
+.\" The Institute of Electrical and Electronics Engineers and The Open
+.\" Group, have given us permission to reprint portions of their
+.\" documentation.
+.\"
+.\" In the following statement, the phrase ``this text'' refers to portions
+.\" of the system documentation.
+.\"
+.\" Portions of this text are reprinted and reproduced in electronic form
+.\" in the SunOS Reference Manual, from IEEE Std 1003.1, 2004 Edition,
+.\" Standard for Information Technology -- Portable Operating System
+.\" Interface (POSIX), The Open Group Base Specifications Issue 6,
+.\" Copyright (C) 2001-2004 by the Institute of Electrical and Electronics
+.\" Engineers, Inc and The Open Group. In the event of any discrepancy
+.\" between these versions and the original IEEE and The Open Group
+.\" Standard, the original IEEE and The Open Group Standard is the referee
+.\" document. The original Standard can be obtained online at
+.\" http://www.opengroup.org/unix/online.html.
+.\"
+.\" This notice shall appear on any product containing this material.
+.\"
+.\" The contents of this file are subject to the terms of the
+.\" Common Development and Distribution License (the "License").
+.\" You may not use this file except in compliance with the License.
+.\"
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+.\" or http://www.opensolaris.org/os/licensing.
+.\" See the License for the specific language governing permissions
+.\" and limitations under the License.
+.\"
+.\" When distributing Covered Code, include this CDDL HEADER in each
+.\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+.\" If applicable, add the following below this CDDL HEADER, with the
+.\" fields enclosed by brackets "[]" replaced with your own identifying
+.\" information: Portions Copyright [yyyy] [name of copyright owner]
+.\"
+.\"
+.\" Copyright (c) 1992, X/Open Company Limited. All Rights Reserved.
+.\" Portions Copyright (c) 1995, Sun Microsystems, Inc. All Rights Reserved.
+.\"
+.TH FNMATCH 7 "Jun 14, 2015"
+.SH NAME
+fnmatch \- file name pattern matching
+.SH DESCRIPTION
+.LP
+The pattern matching notation described below is used to specify patterns for
+matching strings in the shell. Historically, pattern matching notation is
+related to, but slightly different from, the regular expression notation. For
+this reason, the description of the rules for this pattern matching notation is
+based on the description of regular expression notation described on the
+\fBregex\fR(7) manual page.
+.SS "Patterns Matching a Single Character"
+.LP
+The following patterns match a single character: \fIordinary characters\fR,
+\fIspecial pattern characters\fR and \fIpattern bracket expressions\fR. The pattern
+bracket expression will also match a single collating element.
+.sp
+.LP
+An ordinary character is a pattern that matches itself. It can be any character
+in the supported character set except for \fINUL\fR, those special shell
+characters that require quoting, and the following three special pattern
+characters. Matching is based on the bit pattern used for encoding the
+character, not on the graphic representation of the character. If any character
+(ordinary, shell special, or pattern special) is quoted, that pattern will
+match the character itself. The shell special characters always require
+quoting.
+.sp
+.LP
+When unquoted and outside a bracket expression, the following three characters
+will have special meaning in the specification of patterns:
+.sp
+.ne 2
+.na
+\fB\fB?\fR \fR
+.ad
+.RS 6n
+A question-mark is a pattern that will match any character.
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fB*\fR \fR
+.ad
+.RS 6n
+An asterisk is a pattern that will match multiple characters, as described in
+\fBPatterns Matching Multiple Characters\fR, below.
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fB[\fR \fR
+.ad
+.RS 6n
+The open bracket will introduce a pattern bracket expression.
+.RE
+
+.sp
+.LP
+The description of basic regular expression bracket expressions on the
+\fBregex\fR(7) manual page also applies to the pattern bracket expression,
+except that the exclamation-mark character \fB(\fR \fB!\fR \fB)\fR replaces the
+circumflex character (\fB^\fR) in its role in a \fInon-matching list\fR in the
+regular expression notation. A bracket expression starting with an unquoted
+circumflex character produces unspecified results.
+.sp
+.LP
+The restriction on a circumflex in a bracket expression is to allow
+implementations that support pattern matching using the circumflex as the
+negation character in addition to the exclamation-mark. A portable application
+must use something like \fB[\e^!\fR] to match either character.
+.sp
+.LP
+When pattern matching is used where shell quote removal is not performed (such
+as in the argument to the \fBfind\fR \fB-name\fR primary when \fBfind\fR is
+being called using one of the \fBexec\fR functions, or in the \fIpattern\fR
+argument to the \fBfnmatch\fR(3C) function, special characters can be escaped
+to remove their special meaning by preceding them with a backslash character.
+This escaping backslash will be discarded. The sequence \fB\e\e\fR represents
+one literal backslash. All of the requirements and effects of quoting on
+ordinary, shell special and special pattern characters will apply to escaping
+in this context.
+.sp
+.LP
+Both quoting and escaping are described here because pattern matching must work
+in three separate circumstances:
+.RS +4
+.TP
+.ie t \(bu
+.el o
+Calling directly upon the shell, such as in pathname expansion or in a
+\fBcase\fR statement. All of the following will match the string or file
+\fBabc\fR:
+.sp
+
+.sp
+.TS
+l l l l l
+l l l l l .
+\fBabc\fR \fB"abc"\fR \fBa"b"c\fR \fBa\ebc\fR \fBa[b]c\fR
+\fBa["b"]c\fR \fBa[\eb]c\fR \fBa["\eb"]c\fR \fBa?c\fR \fBa*c\fR
+.TE
+
+The following will not:
+.sp
+
+.sp
+.TS
+l l l .
+\fB"a?c"\fR \fBa\e*c\fR \fBa\e[b]c\fR
+.TE
+
+.RE
+.RS +4
+.TP
+.ie t \(bu
+.el o
+Calling a utility or function without going through a shell, as described for
+\fBfind\fR(1) and the function \fBfnmatch\fR(3C)
+.RE
+.RS +4
+.TP
+.ie t \(bu
+.el o
+Calling utilities such as \fBfind\fR, \fBcpio\fR, \fBtar\fR or \fBpax\fR
+through the shell command line. In this case, shell quote removal is performed
+before the utility sees the argument. For example, in:
+.sp
+find /bin -name e\ec[\eh]o -print
+.sp
+after quote removal, the backslashes are presented to \fBfind\fR and it treats
+them as escape characters. Both precede ordinary characters, so the \fBc\fR and
+\fBh\fR represent themselves and \fBecho\fR would be found on many historical
+systems (that have it in \fB/bin\fR). To find a file name that contained shell
+special characters or pattern characters, both quoting and escaping are
+required, such as:
+.sp
+\fBpax -r .\|.\|. "*a\e\|(\|\e?"\fR
+.sp
+to extract a filename ending with \fBa(?\fR.
+.RE
+.sp
+.LP
+Conforming applications are required to quote or escape the shell special
+characters (sometimes called metacharacters). If used without this protection,
+syntax errors can result or implementation extensions can be triggered. For
+example, the KornShell supports a series of extensions based on parentheses in
+patterns; see \fBksh\fR(1)
+.SS "Patterns Matching Multiple Characters"
+.LP
+The following rules are used to construct \fIpatterns matching multiple
+characters\fR from \fIpatterns matching a single character\fR:
+.RS +4
+.TP
+.ie t \(bu
+.el o
+The asterisk (*) is a pattern that will match any string, including the null
+string.
+.RE
+.RS +4
+.TP
+.ie t \(bu
+.el o
+The concatenation of \fIpatterns matching a single character\fR is a valid
+pattern that will match the concatenation of the single characters or collating
+elements matched by each of the concatenated patterns.
+.RE
+.RS +4
+.TP
+.ie t \(bu
+.el o
+The concatenation of one or more \fIpatterns matching a single character\fR
+with one or more asterisks is a valid pattern. In such patterns, each asterisk
+will match a string of zero or more characters, matching the greatest possible
+number of characters that still allows the remainder of the pattern to match
+the string.
+.RE
+.sp
+.LP
+Since each asterisk matches zero or more occurrences, the patterns \fBa*b\fR
+and \fBa**b\fR have identical functionality.
+.sp
+.LP
+Examples:
+.sp
+.ne 2
+.na
+\fB\fBa[bc]\fR \fR
+.ad
+.RS 10n
+matches the strings \fBab\fR and \fBac\fR.
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fBa*d\fR \fR
+.ad
+.RS 10n
+matches the strings \fBad\fR, \fBabd\fR and \fBabcd\fR, but not the string
+\fBabc\fR.
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fBa*d*\fR \fR
+.ad
+.RS 10n
+matches the strings \fBad\fR, \fBabcd\fR, \fBabcdef\fR, \fBaaaad\fR and
+\fBadddd\fR.
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fB*a*d\fR \fR
+.ad
+.RS 10n
+matches the strings \fBad\fR, \fBabcd\fR, \fBefabcd\fR, \fBaaaad\fR and
+\fBadddd\fR.
+.RE
+
+.SS "Patterns Used for Filename Expansion"
+.LP
+The rules described so far in \fBPatterns\fR \fBMatching\fR \fBMultiple\fR
+\fBCharacters\fR and \fBPatterns\fR \fBMatching\fR \fBa\fR \fBSingle\fR
+\fBCharacter\fR are qualified by the following rules that apply when pattern
+matching notation is used for filename expansion.
+.RS +4
+.TP
+1.
+The slash character in a pathname must be explicitly matched by using one
+or more slashes in the pattern; it cannot be matched by the asterisk or
+question-mark special characters or by a bracket expression. Slashes in the
+pattern are identified before bracket expressions; thus, a slash cannot be
+included in a pattern bracket expression used for filename expansion. For
+example, the pattern \fBa[b/c]d\fR will not match such pathnames as \fBabd\fR
+or \fBa/d\fR. It will only match a pathname of literally \fBa[b/c]d\fR.
+.RE
+.RS +4
+.TP
+2.
+If a filename begins with a period (.), the period must be explicitly
+matched by using a period as the first character of the pattern or immediately
+following a slash character. The leading period will not be matched by:
+.sp
+\(bu the asterisk or question-mark special characters
+.sp
+\(bu a bracket expression containing a non-matching list, such as:
+.sp
+\fB[!a]\fR
+.sp
+a range expression, such as:
+.sp
+\fB[%\(mi0]\fR
+.sp
+or a character class expression, such as:
+.sp
+\fB[[:punct:]]\fR
+.sp
+It is unspecified whether an explicit period in a bracket expression matching
+list, such as:
+.sp
+\fB[.abc]\fR
+.sp
+can match a leading period in a filename.
+.RE
+.RS +4
+.TP
+3.
+Specified patterns are matched against existing filenames and pathnames, as
+appropriate. Each component that contains a pattern character requires read
+permission in the directory containing that component. Any component, except
+the last, that does not contain a pattern character requires search permission.
+For example, given the pattern:
+.sp
+\fB/foo/bar/x*/bam\fR
+.sp
+search permission is needed for directories \fB/\fR and \fBfoo\fR, search and
+read permissions are needed for directory \fBbar\fR, and search permission is
+needed for each \fBx*\fR directory.
+.sp
+If the pattern matches any existing filenames or pathnames, the pattern will be
+replaced with those filenames and pathnames, sorted according to the collating
+sequence in effect in the current locale. If the pattern contains an invalid
+bracket expression or does not match any existing filenames or pathnames, the
+pattern string is left unchanged.
+.RE
+.SH SEE ALSO
+.LP
+.BR find (1),
+.BR ksh (1),
+.BR fnmatch (3C),
+.BR regex (7)