The C shell's
brain damage (
47.2
)
keeps you from using an
if
(
47.3
)
with an
else
in an alias.
You have to use a
sourceable script (
10.5
)
.
Or that's what I thought until I saw an article by Lloyd Zusman on
comp.unix.questions
in December 1987.
He'd saved an earlier posting on that group (but without its author's name)
that showed how.
The trick: use enough backslashes (
\
) and the
eval
(
8.10
)
command.

As an example, here's an alias named
C
for
compiling (
52.8
)
C programs.
It needs the
executable
filename (like
C prog
), not the
source filename (like
C prog.c
).
If you type a filename ending in
.c
, it complains and quits.
Else, it:

Renames any old
prog
file to
prog.old
,

Prints the message
prog
SENT TO cc
,

Compiles
prog.c
,

And - if there's a
prog
file (if the compile
succeeded)-runs
chmod 311 prog
to protect the file from
accidental reading with a command like
cat *
or
more *
.

Your alias doesn't need to be as complicated.
But this one shows some tricks, like putting an
if
inside the
if
, that you might want to use.
The expressions like
=~
and
-e
are explained in article
47.4
.
Watch your quoting - remember that the shell strips off one level of
quoting
when you set the alias (
10.3
)
and another during the first pass of
the
eval
.
Follow this example and you'll probably be fine: