alias 命令
基本介绍
alias是 Shell 内建命令,用于创建、查看和删除命令别名。命令别名是指向其他命令或命令组合的短名称,常用于简化常用命令、携带默认选项,或为命令指定更易读的替代名。
资料合集:https://pan.quark.cn/s/6fe3007c3e95、https://pan.quark.cn/s/561de99256a5、https://pan.quark.cn/s/985f55b13d94、https://pan.quark.cn/s/d0fb20abd19a
语法
alias[选项][名称[=值]...]unalias[选项][名称...]- 不带参数时,显示当前 Shell 中定义的所有别名。
- 仅指定名称时,显示该别名对应的命令。
- 指定
名称=值时,创建或修改别名。 - 使用
unalias删除别名。
常用选项
alias选项
-p:以alias 名称=值的形式显示所有别名,便于重新加载。
unalias选项
-a:删除当前 Shell 中的全部别名。
使用示例
1. 显示所有别名
alias输出示例:
alias ll='ls -l' alias la='ls -A' alias ..='cd ..'2. 创建命令别名
aliasll='ls -l'aliasla='ls -A'alias..='cd ..'此后执行ll相当于执行ls -l,执行..相当于执行cd ..。
3. 查看单个别名
aliasll输出示例:
alias ll='ls -l'若别名不存在,Shell 会报错。
4. 创建带选项的别名
aliasgrep='grep --color=auto'aliasdiff='diff -u'aliasrm='rm -i'aliascp='cp -i'aliasmv='mv -i'每次执行grep等命令时,会自动携带指定选项。为rm、cp、mv添加-i可防止误删或误覆盖文件。
5. 创建组合命令的别名
aliasupdate='sudo apt update && sudo apt upgrade'aliassize='du -sh ./* | sort -h'6. 在别名中使用位置参数
别名本身不支持位置参数。需要使用参数时应改用函数:
greet(){echo"Hello,$1!"}7. 替换已存在的命令名
aliasls='ls -lF'此时ls被替换为ls -lF。若要使用原始命令,可在名称前加\或使用command内建:
\lscommandls8. 取消别名
unaliasll9. 取消全部别名
unalias-a10. 查看默认别名
alias-p以可直接用于加载的alias 名称=值格式输出,例如在脚本中重新加载别名配置时很有用。
在配置文件中持久化别名
临时创建的别名在 Shell 退出后会失效。要让别名在每个会话中生效,应在 Shell 的启动配置文件中添加它们:
- Bash 交互式登录 Shell:
~/.bash_profile或~/.profile - Bash 交互式非登录 Shell:
~/.bashrc - Zsh:
~/.zshrc - Fish:
~/.config/fish/config.fish
推荐在~/.bashrc中配置别名,并在~/.bash_profile中引用~/.bashrc:
# ~/.bash_profileif[-f~/.bashrc];then.~/.bashrcfi# ~/.bashrcaliasll='ls -l'aliasla='ls -A'alias..='cd ..'alias...='cd ../..'aliasgrep='grep --color=auto'aliasdiff='diff -u'aliasrm='rm -i'aliascp='cp -i'aliasmv='mv -i'修改配置文件后,可使用source重新加载:
source~/.bashrc别名扩展规则
- 别名中的字符串只在命令行的第一个字段进行替换。
- Bash 中别名默认不会在脚本中扩展,也不会在非交互式 Shell 中扩展。
- 别名替换不会递归展开:若别名值中又出现别名名,Bash 不会再次替换它,除非该别名定义为以空格结尾。
- 别名无法在其中直接使用位置参数
$1、$2等,需要参数时应改用 Shell 函数。
alias 与函数的区别
| 特性 | alias | 函数 |
|---|---|---|
| 定义方式 | alias 名称=值 | name() { ... } |
| 支持位置参数 | 不支持 | 支持 |
| 支持多语句 | 有限制 | 完整支持 |
| 在脚本中可用 | 通常不可用 | 可用 |
| 优先级 | 低于函数 | 高于别名 |
需要参数、多步骤逻辑或条件分支时,建议使用函数而非别名。
mkcd(){mkdir-p"$1"&&cd"$1"}常见内置别名
某些发行版会为交互式 Shell 预置别名,例如:
aliasls='ls --color=auto'aliasll='ls -l'aliasla='ls -A'aliasl='ls -CF'aliasgrep='grep --color=auto'注意事项
alias是 Shell 内建命令,不是独立的可执行文件,因此which alias通常找不到对应二进制。- 别名中出现空格或特殊字符时,整个值应用引号包裹。
- 创建与系统命令同名的别名时要谨慎,避免造成混淆。
- 别名在脚本中通常不会展开,不要在脚本逻辑中依赖别名。
- 处理敏感数据时,注意别名不要将密码、令牌或密钥硬编码在配置中。
相关命令
unalias:删除别名。builtin:直接执行 Shell 内建命令,绕过可能覆盖它的别名或函数。command:直接执行命令,绕过别名和函数。function:定义 Shell 函数,实现更复杂的封装逻辑。shopt:管理 Bash 的其他行为选项。~/.bashrc:Bash 交互式 Shell 的启动配置文件。
总结
alias是创建命令级快捷方式的基本工具。合理使用别名可以提高日常命令行效率,但对于需要参数、条件分支或多语句组合的场景,应改用 Shell 函数。配置别名时应通过~/.bashrc等启动文件持久化,并注意避免覆盖关键系统命令。