1.3.9. - UNIX Commands
The easiest way to write macro definitions is to use a standard text editor to create a command file, and the easiest way to get at the text editor is through the
unix()
function that spawns
subshells.
1.FOURC> unix("vi macro.defs")
"macro.defs" 3 lines, 20 characters 2.FOURC> qdo macro.defs
Opened input file `macro.defs' at level 1. 3.FOURC>
Any UNIX command may be spawned as in the above example. Because this is so useful, a macro has been written to simplify the syntax. You could type:
1.FOURC> u vi macro.defs
"macro.defs" 3 lines, 20 characters 2.FOURC> qdo macro.defs
Opened input file `macro.defs' at level 1. 3.FOURC>
The
unix()
command (or the
u
macro) with no argument will spawn a subshell.
You return to
spec
upon exiting the subshell.
spec
uses the shell environment variable
SHELL
or
shell,
if set, to select the type of UNIX shell.
By default,
/bin/sh
is used.
With arguments,
unix()
uses
/bin/sh
to execute the one-line command.
For some common UNIX commands,
macros such as the following
are defined in the standard library.
def cat 'unix("cat $*")' def ls 'unix("ls $*")' def l 'unix("ls -l $*")' def vi 'unix("vi $*")'
The working directory of spec can be changed as with the shell.
1.FOURC> cd data
Now in `data' 2.FOURC>
The macro
cd
used above is defined using the built-in function
chdir()
. Only the working directory of the program
spec
is changed;
the shell from which you started
spec
is not touched.