在计算机运算中,alias 是许多命令行界面的命令,比如 Unix shell,4DOS/4NT 和 Windows PowerShell 等,它给用户提供了别名——也就是用自定义字符串替换指定命令的功能,通常用于简写系统命令,或给常用命令添加默认选项,MS-DOS 和 Microsoft Windows 操作系统里,通常使用 DOSKey 命令定义别名。
alias 命令的作用时间是命令运行之后到 shell 会话结束,经常使用的别名可在 shell 的配置文件比如 C Shell(csh)的 ~/.cshrc
或 Bourne Again Shell 的 ~/.bashrc
里定义,如此当相应的 shell 会话启动后就可以使用这些自定义的别名了。alias 命令可以直接写入这些配置文件,或单独放在一个文件,比如 .alias 里,或依用户使用的解释器分别定义于 .alias-bash,.alias-csh 等文件,然后使用 source 命令执行该文件来设定。
别名可以使用给 alias 命令指定键值对参数的方式定义,在 Bash 里,语法如下:
alias copy='cp'
同样的别名,在 csh 或 tcsh 里可以这样指定:
alias copy "cp"
这个别名的作用,是当用户在命令行里输入 copy 时,命令行解释器会把该命令替换为 cp 命令来执行。
在 4DOS/4NT 命令行里,可以使用以下命令把 cp 定义为 4DOS 的 copy
命令的别名:
alias cp copy
要在 Windows PowerShell 里定义别名,可以使用以下命令:
new-alias ci copy-item
以上命令给 Windows PowerShell 的 copy-item
命令定义了一个别名 ci
,因此用户在 Windows PowerShell 里输入 ci 时,实际执行的是 copy-item
命令。
Unix 里,alias 命令是由 C shell 引入的,之后也被加入到 tcsh 和 Bash 里。C shell 的别名被严格限制在一行里,复杂的 shell 语言则需要多行,不过单行别名对创建快捷的命令仍然很有用。Bourne shell(sh)里没有别名功能,但它有更强大的 shell 函数方式。Bash 和 Korn shell(ksh)则同时支持函数和别名,并建议在可能时尽量使用函数。
要查看当前命令行已定义的别名,可以用以下命令:
alias # 不帶參數運行 alias 命令,可顯示當前已定義的别名列表alias -p # 同上,但在 4DOS/4NT 和 PowerShell 里無效alias # 顯示指定别名取代的實際命令
忽略别名
在 Unix shells 里,如果别名已经指定过,可以把命令放在引号里,或在前面添加一个反斜杠来使别名定义失效。比如,若已定义了以下别名:
alias ls='ls -la'
要使以上别名失效并强制执行原始的 ls
命令,可使用以下语法:
'ls'
或
\ls
在 4DOS/4NT 命令行里,则可以在命令前面添加星号来使已定义的别名失效,比如,可用以下方式定义别名:
alias dir = *dir /2/p
第二个 dir 命令前的星号,确保其运行的是原始的 dir 命令,避免递归地别名展开,用户还可以运行以下命令,确保运行的是原始(未设定别名的)dir 命令:
*dir
更改别名
在 Windows PowerShell 里,可使用以下命令更改一个已经存在的别名:
set-alias ci cls
运行以上命令后,ci
将变成 cls
命令的别名。
在 Unix shell 和 4DOS/4NT 里,别名可以通过 unalias
命令清除:
unalias copy # 删除 copy 别名 unalias -a # -a 选项会清除所有已定义的别名,此选项在 4DOS/4NT 里无效