Alias (command) explained

alias
Author:Bill Joy
Developer:Various open-source and commercial developers
Operating System:Unix, Unix-like, AmigaDOS, FreeDOS, Microsoft Windows, ReactOS, AROS, KolibriOS, IBM i
Platform:Cross-platform
Genre:Command

In computing, alias is a command in various command-line interpreters (shells), which enables a replacement of a word by another string.[1] It is mainly used for abbreviating a system command, or for adding default arguments to a regularly used command. alias is available in Unix shells, AmigaDOS, 4DOS/4NT, FreeDOS, KolibriOS, Windows PowerShell, ReactOS, and the EFI shell.[2] Aliasing functionality in the MS-DOS and Microsoft Windows operating systems is provided by the DOSKey command-line utility.

An alias will last for the life of the shell session. Regularly used aliases can be set from the shell's rc file (such as .bashrc) so that they will be available upon the start of the corresponding shell session. The alias commands may either be written in the config file directly or sourced from a separate file.

History

In Unix, aliases were introduced in the C shell and survive in descendant shells such as tcsh and bash. C shell aliases were strictly limited to one line. This was useful for creating simple shortcut commands, but not more complex constructs. Older versions of the Bourne shell did not offer aliases, but it did provide functions, which are more powerful than the csh alias concept. The alias concept from csh was imported into Bourne Again Shell (bash) and the Korn shell (ksh). With shells that support both functions and aliases but no parameterized inline shell scripts, the use of functions wherever possible is recommended. Cases where aliases are necessary include situations where chained aliases are required (bash and ksh).The command has also been ported to the IBM i operating system.[3]

Usage

Creating aliases

Common Unix shells

Non-persistent aliases can be created by supplying name/value pairs as arguments for the alias command. In Unix shells the syntax is:alias gc='git commit'

C shell

The corresponding syntax in the C shell or tcsh shell is:alias gc "git commit"This alias means that when the command gc is read in the shell, it will be replaced with [[git]] commit and that command will be executed instead.

4DOS

In the 4DOS/4NT shell the following syntax is used to define cp as an alias for the 4DOS [[copy (command)|copy]] command:

alias cp copy

Windows PowerShell

To create a new alias in Windows PowerShell, the new-alias cmdlet can be used:new-alias ci copy-itemThis creates a new alias called ci that will be replaced with the copy-item cmdlet when executed.

In PowerShell, an alias cannot be used to specify default arguments for a command. Instead, this must be done by adding items to the collection $PSDefaultParameterValues, one of the PowerShell preference variables.

Viewing currently defined aliases

To view defined aliases the following commands can be used:alias # Used without arguments; displays a list of all current aliasesalias -p # List aliases in a way that allows re-creation by sourcing the output; not available in 4DOS/4NT and PowerShellalias myAlias # Displays the command for a defined alias

Overriding aliases

In Unix shells, it is possible to override an alias by quoting any character in the alias name when using the alias. For example, consider the following alias definition:alias ls='ls -la'To override this alias and execute the [[ls]] command as it was originally defined, the following syntax can be used:

'ls'

or

\ls

In the 4DOS/4NT shell it is possible to override an alias by prefixing it with an asterisk. For example, consider the following alias definition:

alias dir = *dir /2/p

The asterisk in the 2nd instance of [[dir (command)|dir]] causes the unaliased dir to be invoked, preventing recursive alias expansion. Also the user can get the unaliased behaviour of dir at the command line by using the same syntax:

*dir

Changing aliases

In Windows PowerShell, the set verb can be used with the alias cmdlet to change an existing alias:set-alias ci clsThe alias ci will now point to the [[cls (command)|cls]] command.

In the 4DOS/4NT shell, the eset command provides an interactive command line to edit an existing alias:

eset /a cp

The /a causes the alias cp to be edited, as opposed to an environment variable of the same name.

Removing aliases

In Unix shells and 4DOS/4NT, aliases can be removed by executing the unalias command:unalias copy # Removes the copy aliasunalias -a # The -a switch will remove all aliases; not available in 4DOS/4NTunalias * # 4DOS/4NT equivalent of `unalias -a` - wildcards are supportedIn Windows PowerShell, the alias can be removed from the alias:\ drive using remove-item:remove-item alias:ci # Removes the ci alias

Features

Chaining

An alias usually replaces just the first word. But some shells, such as and, allow a sequence or words to be replaced. This particular feature is unavailable through the function mechanism.

The usual syntax is to define the first alias with a trailing space character. For instance, using the two aliases:alias list='ls ' # note the trailing space to trigger chainingalias long='-Flas' # options to ls for a long listingallows:list long myfile # becomes "ls -Flas myfile" when runfor a long listing, where "long" is also evaluated as an alias.

Command arguments

In the C Shell, arguments can be embedded inside the command using the string . For example, with this alias: alias ls-more 'ls \!* | more'ls-more /etc /usr expands to ls /etc /usr | more to list the contents of the directories /etc and /usr, pausing after every screenful. Without, alias ls-more 'ls | more'would instead expand to ls | more /etc /usr which incorrectly attempts to open the directories in more.[4]

The Bash and Korn shells instead use shell functions — see § Alternatives below.

Alternatives

Aliases should usually be kept simple. Where it would not be simple, the recommendation is usually to use one of the following:

The most common form of aliases, which just add a few options to a command and then include the rest of the command line, can be converted easily to shell functions following this pattern:alias ll='ls -Flas' # long listing, aliasll # long listing, functionTo prevent a function from calling itself recursively, use [[command (Unix)|command]]:ls In older Bourne shells use /bin/ls instead of command ls.

Further reading

External links

Notes and References

  1. Book: AmigaDOS quick reference : Rügheimer, Hannes : Free Download, Borrow, and Streaming : Internet Archive . Internet Archive . 2020-06-10 . 9781557550491 . 2020-09-12. Rugheimer . Hannes .
  2. Web site: EFI Shells and Scripting . . 2013-09-25.
  3. Web site: IBM System i Version 7.2 Programming Qshell . en . IBM . . IBM . 2020-09-05 .
  4. Web site: Examples of passing arguments given to a command alias . dead . https://web.archive.org/web/20121125074502/http://unixhelp.ed.ac.uk/shell/alias_csh2.1.html . 2012-11-25 . UNIXhelp . University of Edinburgh.