A command interpreter may do some useful preprocessing of operands of
(user-defined and built-in) commands.
This preprocessing normally consists of
macro substitution.
For instance a `*'may be replaced by a string
containing the file names in the current directory.
Macro processing promotes automation (since the user-defined program
does not have to do the substitution), uniformity (the symbol `*' has
the same meaning for different commands),
and ease of use (most programs would probably not take the trouble of
defining the `*' symbol on their own,
macro substitution thus provides a user with a useful facility that would
otherwise go unsupported).