Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ wildcards — Apollo

Media Vault

Software Library

Restoration Projects

Artifacts Sought

WILDCARDS -- Summary of Shell Wildcard Syntax and Usage          83/08/08


  (You may find a more complete description of the following features in the
  Command Shell chapter of the "DOMAIN System Command Reference Manual".)

  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,
                              preserving their leaf names

      chn {frank.pas}.bak @1  renames "frank.pas.bak" to "frank.pas".

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026