Filename substitution



Filename substitution


Up
Next
Previous
Filename substitution
If a word contains any of the characters `*', `?', `[' or `{' or begins with
the character `~' it is a candidate for filename substitution, also known as
``globbing''. This word is then regarded as a pattern (``glob-pattern''), and
replaced with an alphabetically sorted list of file names which match the
pattern.

In matching filenames, the character `.' at the beginning of a filename or
immediately following a `/', as well as the character `/' must be matched
explicitly. The character `*' matches any string of characters, including the
null string. The character `?' matches any single character. The sequence
`[...]' matches any one of the characters enclosed. Within `[...]', a pair of
characters separated by `-' matches any character lexically between the two.

(+) Some glob-patterns can be negated:
The sequence `[^...]' matches any single character not specified by the
characters and/or ranges of characters in the braces.

An entire glob-pattern can also be negated with `^':


> echo *

bang crash crunch ouch

> echo ^cr*

bang ouch


Glob-patterns which do not use `?', `*', or `[]' or which use `{}' or `~'
(below) are not negated correctly.

The metanotation `a{b,c,d}e' is a shorthand for `abe ace ade'.
Left-to-right order is preserved: `/usr/source/s1/{oldls,ls}.c' expands
to `/usr/source/s1/oldls.c /usr/source/s1/ls.c'. The results of matches are
sorted separately at a low level to preserve this order:
`../{memo,*box}' might expand to `../memo ../box ../mbox'.
(Note that `memo' was not sorted with the results of matching `*box'.)
It is not an error when this construct expands to files which do not exist,
but it is possible to get an error from a command to which the expanded list
is passed.
This construct may be nested.
As a special case the words `{', `}' and `{}' are passed undisturbed.

The character `~' at the beginning of a filename refers to home directories.
Standing alone, i.e. `~', it expands to the invoker's home directory as
reflected in the value of the home shell variable. When followed by a
name consisting of letters, digits and `-' characters the shell searches for a
user with that name and substitutes their home directory; thus `~ken' might
expand to `/usr/ken' and `~ken/chmach' to `/usr/ken/chmach'. If the character
`~' is followed by a character other than a letter or `/' or appears elsewhere
than at the beginning of a word, it is left undisturbed.
A command like `setenv MANPATH /usr/man:/usr/local/man:~/lib/man' does not,
therefore, do home directory substitution as one might hope.

It is an error for a glob-pattern containing `*', `?', `[' or `~', with or
without `^', not to match any files. However, only one pattern in a list of
glob-patterns must match a file (so that, e.g., `rm *.a *.c *.o' would fail
only if there were no files in the current directory ending in `.a', `.c', or
`.o'), and if the nonomatch shell variable is set a pattern (or list
of patterns) which matches nothing is left unchanged rather than causing
an error.

The noglob shell variable can be set to prevent filename substitution,
and the expand-glob editor command, normally bound to `^X-*', can be
used to interactively expand individual filename substitutions.

Up
Next
Previous



Wyszukiwarka

Podobne podstrony:
Command, filename and directory stack substitution
filename
FilenameFilter
substituted diphenylacetic
!0001 HTML Filenames
FileNameMap
filename
FilenameFilter
FileNameExtensionFilter
filename
function mb substitute character
SMITH, DONIGER sacrifice and substitution
FileNameMap
filename

więcej podobnych podstron