Bash 专业人员笔记 -- 第 7 章:别名 Shell 别名是一种创建新命令或用自己的代码包装现有命令的简单方法。它们与 shell 函数有一定的重叠但函数更通用因此通常更应优先使用。第 7.1 节绕过别名有时你可能希望临时绕过别名而不禁用它。以一个具体的例子说明考虑以下别名aliaslsls --colorauto现在你想使用ls命令但不禁用该别名。你有几个选择使用command内建命令command ls使用命令的完整路径/bin/ls在命令名的任何位置添加一个\例如\ls或l\s引用命令ls或ls第 7.2 节创建别名aliaswordcommand调用word将运行command。传递给别名的任何参数只是简单地附加到命令的后面aliasmyAliassome command --with --optionsmyAlias foo bar bazshell 将执行somecommand--with--optionsfoo bar baz要在同一个别名中包含多个命令可以用将它们串起来。例如aliasprint_thingsecho foo echo bar echo baz第 7.3 节移除别名要移除现有的别名使用unalias{alias_name}示例# 创建别名$aliasnowdate# 预览别名$ now Thu Jul2117:11:25 CEST2016# 移除别名$unaliasnow# 测试是否已移除$ now -bash: now:commandnot found第 7.4 节BASH_ALIASES是一个内部的 Bash 关联数组别名是命令的命名快捷方式可以在交互式 bash 实例中定义和使用。它们保存在一个名为BASH_ALIASES的关联数组中。要在脚本中使用这个变量它必须在交互式 shell 中运行。#!/bin/bash -li # 注意上面的 -li-l 使其行为类似登录 shell-i 使其行为类似交互式 shellechoThere are${#BASH_ALIASES[*]}aliases defined.foraliin${!BASH_ALIASES[]};doprintfalias: %-10s triggers: %s\n$ali${BASH_ALIASES[$ali]}done第 7.5 节展开别名假设bar是someCommand --flag1的别名。在命令行输入bar然后按CtrlAlte你会看到bar所在的位置变成了someCommand --flag1。第 7.6 节列出所有别名alias-p将列出当前所有的别名。