WILDCARDS Aegis WILDCARDS
NAME
wildcards - summary of shell wildcard syntax and usage
DESCRIPTION
Wildcards are text strings which provide a shorthand way to represent one
or more existing naming server pathnames. Regular expressions are used
in place of directory entry names to specify which names at the
corresponding point in the naming tree will match. (For a description of
regular expression construction, type help patterns.) One or more
regular expressions, optionally preceded by "/", "//", "~", or ".", and
separated by "/" or "\", form a wildcard.
DIFFERENCES FROM DM REGULAR EXPRESSIONS
The regular expressions used in wildcards deviate slightly from those
used in the Display Manager. These deviations are:
1. Each regular expression is assumed to be preceded by "%" (the
beginning-of-line character) and followed by a "$" (the end-of-
line character). These characters may NOT be supplied explicitly.
(N.B. Were it not for this deviation, the wildcard name "?"
would match any name, instead of only 1-character names.)
2. When "%" is found in a wildcard, it is replaced by the regular
expression "[~.]*", which means 'all characters up to but not
including the next period'. This introduces the notion of
"components" within entry names, where a component is a character
string which is delimited by periods or either end of the name.
"%" will match zero or more characters.
The symbol "..." (ellipses) may be used in place of an entry name to
indicate that any number of directory names (including zero) may appear
in its place. For each directory which satisfies the portion of the
wildcard to the left of the ellipses, it and all subdirectories are
searched for entries which satisfy the portion of the wildcard to the
right of the ellipses. Ellipses may appear any number of times in a
wildcard.
EXAMPLES
Examples of wildcards are:
zork "zork", contained in the working directory.
z?* all names which begin with "z", contained in the
working directory.
/fred/?* all names contained in the directory "/fred"
/... all names contained in "/" and all directories
thereunder (includes the name "/")
/?*/... same as above, but excludes the name "/"
/.../curmudgeon.% all 2 component names whose first component is
"curmudgeon", anywhere under the "/" directory
//lang/.../?*.bak all names under the "//lang" directory which end in
".bak"
all names under the working directory
~[a-m]?*/?*.ftn all names which end in ".ftn" contained in
directories whose names start with the characters 'a'
thru 'm', under the naming directory
DERIVED NAMES
Some commands accept two or more names which are logically related.
These commands include chn (change_name)- from and to names; cpf
(copy_file) - source and destination; cmt (compare_tree) - names of the
two trees being compared; and others. The second (and subsequent) names
are called "derived names", because they may be syntactically derived
from the first name. The syntax for derived names is similar to that
used in the right-hand side of a Display Manager or es "substitute"
operation, with the exception that the ampersand ("&") character is
replaced by an equal-sign ("="). (A word of explanation: The shell uses
the "&" to signify that this command is to be executed in another
process. This makes the ampersand unavailable.)
EXAMPLES
Examples of derived name usage are:
chn ziggy.pas =.old renames "ziggy.pas" to "ziggy.pas.old"
cpf /{?*.pas} /src/@1
copies all files with the suffix ".pas" in the root
directory to the "/src" directory,renames "ziggy.pas"
to "ziggy.pas.old" preserving their leaf names
chn {frank.pas}.bak @1
renames "frank.pas.bak" to "frank.pas".