Shell Aliases
Shell aliases are shortcut names for commands. Each alias consists of one word (or even one letter) that you can use instead of a longer command line. For example, you may find yourself using the command ls -F a lot. You can easily make a shortcut for that command: lf, for example. So when you use lf where the shell expects a command, then the shell will substitute ls -F.
To see all your current aliases:
alias
The alias command with no arguments displays all your current aliases. The first item on each line is the alias (which must always be a single string, with no spaces), and the rest of the line is the full command for which the alias is a shortcut. Figure 7.9 shows the default aliases for the tcsh shell. You can see that the alias l is a shortcut for the command ls -lg. The first word on each line is the name of the alias; the rest of the line is what gets executed when the alias is used.
Several of the aliases are more complicated. The aliases in Figure 7.9 are for the tcsh shell, and several of them make use of specific advanced features of that shell (see man tcsh for all of the available features). For example, the alias in Figure 7.9 called line expects two arguments (indicated by !:1 and !:2), while the alias called ll takes all of its arguments (indicated by !*) and inserts them into the middle of a command line.
Figure 7.9 Using the alias command to see all currently set aliases. Shown are the default aliases for the tcsh shell.
You can create aliases at the command line or by adding them to a configuration file.
Aliases created at the command line are only in effect for as long as you use that shellthat is, they disappear when you close that Terminal window. If you want an alias to always be available, you must put it in a con-figuration file.
To create an alias in tcsh or csh:
alias lf 'ls -F'
This will create an alias called lf, which the shell will translate into ls -F whenever you use lf as a command. Make sure to enclose the last argument in quotes, either single or double, so that everything after the alias name is treated as a single entity.
Check to see that the alias is set:
alias
The line
lf ls -F
should be included in your aliases now.
Tips
If you want to have an alias use arguments from the command line inside the alias definition, you can use !:1 for the first argument, !:2 for the second, and so on. But you must escape the ! in the alias definition. So to define an alias called myword that takes its first argument and searches for it inside the file ~/mydictionary, you would use
alias myword 'grep \!:1 ~/ → mydictionary'
You could use that alias in this way:
myword banana
as a shortcut for
grep banana ~/mydictionary
To create an alias in tcsh (or csh) that is set every time you start a shell:
Open your ~/.tcshrc file (for the csh shell use ~/.cshrc).
Add a line with the alias
alias lf 'ls -F'
Save the file.
Quit the editor.
The new alias will be set for the next shell you start.
Open a new Terminal window to check that the alias is set:
alias
You should see your new alias in the resulting list.
TIP
A set of example aliases for the tcsh shell are contained in the file /usr/share/ tcsh/examples/aliases.
To create an alias in bash:
alias lf='ls -F'
Note that there are no spaces before or after the equal sign.
alias
The shell shows all your current aliases, including the one you just created. As with the tcsh shell, bash aliases created at the command line will disappear when you exit the shell.
To create an alias in bash that is set every time you start a shell:
Open your ~/.bash_profile file.
Add a line with the aliasfor example, alias lf='ls -F'
Save the file.
Quit the editor.
The new alias will be set for the next shell you start.
Open a new Terminal window to check that the alias is set:
alias
You should see your new alias in the list:
alias lf='ls -F'
Shell functions
Unlike aliases in the tcsh shell, aliases in bash cannot have command-line arguments included in them. However, bash allows you to create shell functions, which can make use of their arguments.
The term shell function applies to series of shell command lines. This is similar to an alias, except that a shell function can be many lines long, and you may use the special variables $1 for the first argument, $2 for the second, and so on.
Shell functions should be defined in your ~/.bash_profile.
To create a shell function in bash:
Open your ~/.bash_profile.
The entire function you will be entering is shown in Figure 7.10. This sample function looks up a word in two different files that make up a dictionary.
Figure 7.10 Code listing of a bash shell function.
Enter the first line of the new function. In this example you are creating a function called "word":
word () {
The parentheses tell bash that this is a function definition. The bracket ({) marks the beginning of the commands in the function.
Enter the body of the function:
grep $1 /usr/share/dict/web2 grep $1 /usr/share/dict/web2a
Notice that the function can have more than one line of commands.
The $1 is a variable that will be replaced with the first argument when you use the function in a command line. (Read the file /usr/share/dict/README for a description of the web2 and web2a files.)
Finish the function definition with a }. Double-check that what you entered looks like Figure 7.10.
Save the file.
Quit the editor.
The new function will be in effect with the next Terminal window you open.
Open a new Terminal window.
Test the function by trying it on the command line. If you are using the example function from Figure 7.10, then the first argument you supply is used in the function. The function searches two different files for its first argument.
word auspic
You should get the output shown in Figure 7.11. Your new shell function, word, takes its first argument (the $1 in the function) and searches for it in the two files. The function is really a short shell script (see Chapter 9, "Creating and Using Scripts") but is part of your personal shell configuration.
Figure 7.11 Using the new shell function to look up "auspic" in the dictionary.