Tuesday, July 11, 2006

The Lovely alias Command

alias allows you to

a. Give a command a new name, or

b. Assign a command some desirable behavior by default. The syntax is

alias new_name='old name'oralias command='command -switch'

In other words, the alias (the new name for a command or the name you wish to use for the new behavior of a command) always follows 'alias'. To the right of the equals sign, between single quotation marks, figure either the old name of the command or the new behavior assigned.

Warning: by default, alias is only valid for the current session. All changes will be lost upon logging out. To make aliases permanent, it is necessary to write them into .bashrc (see post).

The renaming can be handy if, for example, you'd like to give commands a name that you relate to more than the default name:

alias delete='rm'

will give the rm (remove) command a new name (alias), namely 'delete'.

As a result, it will be possible to carry out the operation of removing files with either delete or rm.alias, thus, gives the command an additional name - it does not replace the previous name. The second way of using alias, to change the default mode of a command, can be handy if you wish a particular switch to be the default mode of a command (to save typing, or, more importantly, since you might forget to type it altogether): as a result of

alias rm='rm -i',

for example, doing rm will actually mean doing rm -i. This happens to be important, as the -i switch means that the machine will ask you whether you're sure that you want to remove the file concerned. Thanks to the alias, the machine will ask for confirmation even when you do rmabsent-mindedly... Likewise, any command can be made to carry out by default any behaviour you happen to prefer. Of course, the two uses of alias can be combined - the new default behavior can also be given a new name if you like:

alias delete='rm -i'.

(To be aware of: The system will allow you to assign a command a dedicated word already used as a command name. In that case, the dedicated word will denote the alias, not the command it usually denotes. Thus, as a result of

alias mv='ls'

mv will behave as an ls command, and not as the usual mv (move)... This behavior depends on the PATH variable, as fully stating the address of mv returns the usual mv behavior:

/bin/mv pilot pilot1

simply renames the file 'pilot'. In short, it's best to avoid dedicated words already used by the system. When in doubt, a quick man or apropos on the new candidate name will tell if it's a dedicated word.)To discard an alias, unalias will do:

unalias delete

means that 'delete' will no longer be a command.To list all current aliases, just do 'alias'.

You can't do manalias, as alias, being a built-in shell command, is described in man bash. Further details and formal description of alias on: http://www.computerhope.com/unix/ualias.htm

alias is just one example, I guess, of what is meant by the power and flexibility of Linux.