Shell Aliases

Shell Aliases

Shell aliases are shortcut names for commands and have nothing to do with Finder aliases (see "About Links [the Unix Version of Aliases]" in Chapter 5). 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 .

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 configuration file.

To create a temporary alias in bash:

1.
alias shortcut =' replacement '

For example:

alias lf='ls -F'

Note that there are no spaces before or after the equals sign.

2.
alias

Used without any arguments, the alias command shows all your current aliases, including the one you just created. Figure 7.8 shows both of the above commands in action.

Figure 7.8. Using the alias command to set a temporary alias and then again (with no arguments) to display current aliases.
 localhost:~ vanilla$  alias lf='ls -F'  localhost:~ vanilla$  alias  alias lf='ls -F' localhost:~ vanilla$ 

Aliases created at the command line will disappear when you exit the shell. The next task shows how to create a bash alias that is always available.

To create a permanent alias in bash:

1.
Edit your ~/.bash_profile file.

For example, using vi :

vi ~/.bash_profile

2.
Add a line with the aliasfor example,

alias lf='ls -F'

3.
Save the file.

4.
Quit the editor.

The new alias is set for the next shell you start.

5.
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'

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.

Aliases in the tcsh and csh shells are set using almost the same syntax as in bash basically, you use a space instead of the = sign.

To create a temporary alias in tcsh or csh :

1.
alias lf 'ls -F'

This creates an alias called lf , which the shell translates 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.

2.
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 a tcsh shell 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. You may use !* to include all the arguments. 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 

  • For example, you could use that alias in this way:

    myword banana

    as a shortcut for

    grep banana ~/mydictionary


To create a permanent alias in tcsh (or csh) :

1.
Edit your ~/.tcshrc file (for the csh shell use ~/. cshrc ).

2.
Add a line with the alias

alias lf 'ls -F'

3.
Save the file.

4.
Quit the editor.

The new alias is set for the next shell you start.

5.
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 is contained in the file /usr/share/tcsh/examples/aliases .


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 a 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:

1.
Open your ~/.bash_profile .

The entire function you will be entering is shown in Figure 7.9 . This sample function looks up a word in two different files that make up a dictionary.

Figure 7.9. Code listing of a bash shell function. The files web2 and web2a refer not to the World Wide Web but to Webster's Second International Dictionary, whose 1934 copyright has expired .
 # shell function to search for a word in Webster's dictionary word () {     grep  /usr/share/dict/web2     grep  /usr/share/dict/web2a } 

2.
Enter a comment and the first line of the new function.

You may put the function anywhere in your .bash_profile . Usually, adding new functions at the end of the file is easiest .

Lines that begin with # in your .bash_profile are comments and are ignored by the shell:

 # shell function to search for a  word in Websters dictionary 

In this example you are creating a function called word ; the actual function definition begins with the function name:

word () {

The parentheses tell bash that this is a function definition. The brace ( { ) marks the beginning of the commands in the function.

3.
Enter the body of the function:

 grep  /usr/share/dict/web2 grep  /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.)

4.
Finish the function definition with a closing brace: } .

Double-check that what you entered looks like Figure 7.9.

5.
Save the file.

6.
Quit the editor.

The new function will be in effect with the next Terminal window you open.

7.
Open a new Terminal window.

8.
Test the function by trying it on the command line. If you are using the example function from Figure 7.9, then the first argument you supply is used in the function. The function searches two different files for its first argument.

9.
word auspic

You should get the output shown in Figure 7.10 . 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) but is part of your personal shell configuration.

Figure 7.10. Using the new shell function to look up auspic in the dictionary.
 localhost:~ vanilla$  word auspic  auspicate auspice auspices auspicial auspicious auspiciously auspiciousness auspicy inauspicious inauspiciously inauspiciousness unauspicious unauspiciously unauspiciousness ultra-auspicious localhost:~ vanilla$ 



Unix for Mac OS X 10. 4 Tiger. Visual QuickPro Guide
Unix for Mac OS X 10.4 Tiger: Visual QuickPro Guide (2nd Edition)
ISBN: 0321246683
EAN: 2147483647
Year: 2004
Pages: 161
Authors: Matisse Enzer

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net