An alias is a renaming of a command by the shell you're using. Bourne shell (
sh) doesn't have aliases;
csh and its derivative
tcsh, as well as
zsh and a gazillion other shells all support aliases.
Simple aliases just call a command by another, possibly more familiar, name. For years, if you were new in UN*Xland from DOSland, you were expected to announce this fact by saying
alias dir ls
alias DIR ls
alias type cat
alias TYPE cat
in your .cshrc
(you probably weren't told about other shells, so I'll not cover their peculiar syntax
here). This supposedly made you feel more at home by letting you type TYPE filename.txt
instead of cat filename.txt
. Note, however, that it's still case sensitive
, and that it probably doesn't look like DOS. Such aliases are still useful, however, to shorten long commands.
These take the form
alias short long
where each of short
is a single "shell word" (in particular, you probably want to quote long
If long looks "normal", then short arg1 arg2... will be treated as long arg1 arg2. So you can say
alias print 'lpr -Pmyprinter'
and it will work.
If long contains
csh history expansion tokens, then short arg1 arg2... will be replaced with long, after history expansion is performed on it as if short arg1 arg2... were the previous line of input! Here are 2 examples from the manual:
alias lookup 'grep \!^ /etc/passwd'
expands to grep bill /etc/passwd
alias print `pr \!* | lpr
print file1.c file1.h file2.c
on file1.c file1.h file2.c
and sense the result off to
Thanks to the horrible syntax of
csh, it is hard to think of something more awkward than writing a good alias there. But we still do it.
These use the different syntax
just to annoy you. The
option allows you to set a global
alias, which expands anywhere in the command line. Alias expansions ending in a space
trigger attempted expansion of the next
Despite all this, this style of aliases is actually simpler than
csh's: you cannot manipulate the words of the command line. The availability of functions at the shell level means you can use aliases just for simpler purposes, where they are more handy; use functions when you need to process the parameters.
Other Bourne-shell derived shells generally have similar aliasing mechanisms.