核心结论是 Linux 中 alias 的作用就是给长命令设置自定义别名,相当于命令快捷缩写,把复杂冗长的命令绑定成简短名字,输入别名的时候,shell 会自动替换成原始完整命令,比如把 rm 设置成 rm i,执行 rm 就自动带上交互确认,降低误删风险,alias 分为临时别名和永久别名,临时别名只在当前终端 shell 会话生效,关闭终端就失效,永久别名需要写入 bashrc 或者 profile 配置文件,重新加载之后长期有效,alias 是 shell 内置命令,不是独立程序,只对当前 shell 环境生效,子进程默认不会继承别名,运维日常经常使用 linux 中 alias 的用法简化巡检 日志查看 服务重启这类重复命令,是非常实用的 shell 优化技巧。
Linux 设计 alias 别名机制,是因为服务器运维有大量重复长命令,每次手动输入完整参数效率很低,shell 在解析命令的时候,会优先识别别名,把别名展开替换成对应的原始命令,这个展开动作发生在命令真正执行之前,需要注意别名不能和系统原有命令重名,重名之后会覆盖原命令行为,很多系统默认就自带 alias,比如 ll 其实就是 ls l 的别名,很多新手不知道 ll 是别名,以为是独立命令,另外 alias 只支持简单命令替换,不能实现复杂逻辑判断,如果需要复杂流程,就需要改成 shell 脚本,而不是继续用别名实现,这也是 linux 中 alias 的用法的能力边界。
linux 中 alias 的用法核心操作表格
| 操作 | 命令写法 | 说明 |
|---|---|---|
| 查看全部别名 | alias | 列出当前 shell 所有已经定义的别名 |
| 查看单个别名 | alias ll | 查看 ll 对应的原始命令 |
| 创建临时别名 | alias rm='rm -i' | 当前终端立即生效 |
| 删除临时别名 | unalias rm | 取消当前会话这个别名 |
| 删除全部别名 | unalias -a | 清空当前 shell 所有别名 |
详细操作步骤
临时别名设置
直接在终端输入 alias ll='ls -l --color=auto'
回车之后立刻生效,当前终端输入 ll 就等价执行 ls l 带颜色输出
关闭这个终端窗口,新开终端,别名就消失,适合临时测试别名写法
永久别名配置
编辑当前用户配置文件 vi ~/.bashrc
在文件末尾追加别名定义,例如
alias nginxrestart='systemctl restart nginx'
alias taillog='tail -f /var/log/nginx/access.log'
保存退出之后,执行 source ~/.bashrc 重新加载配置
之后每次新开终端,别名都会自动加载
全局永久别名,所有用户生效
编辑 /etc/bashrc 或者 /etc/profile.d/ 下面新建单独脚本文件,写入 alias 定义,推荐 profile.d 单独文件,不修改原始主配置,系统升级不容易丢失配置
取消别名
当前会话临时取消 unalias nginxrestart
如果是永久别名,需要打开 bashrc,删除对应的 alias 那一行,再 source 重新加载
进阶要点
别名展开之后如果还要追加参数,是支持的,比如别名是 alias psg='ps aux | grep',执行 psg nginx,就等价 ps aux | grep nginx
如果想要绕过别名,直接调用原始命令,可以在命令前面加反斜杠,比如 \rm test.txt,就不会触发 rm i 这个别名,这个是很实用的技巧
别名名称不能包含空格,别名定义里面如果原始命令带空格,必须使用单引号包裹
zsh shell 的别名配置文件不是 bashrc,是.zshrc,linux 中 alias 的用法语法一致,但是配置文件不同
子 shell 脚本里面默认不加载别名,脚本调用的时候别名会失效,所以自动化脚本不要依赖 alias
常见实用别名示例
alias ll='ls -l --color=auto'
alias la='ls -la'
alias grep='grep --color=auto'
alias net='ip a'
alias dfh='df -h'
alias freeh='free -h'
【常见问题】
问题 1 linux 中 alias 的用法配置完为什么新开终端失效
回答 1 linux 中 alias 的用法,如果只是直接终端执行 alias 定义,属于临时别名,关闭终端就消失,想要永久生效,linux 中 alias 的用法需要写入~/.bashrc,然后执行 source 加载,新开终端才会自动读取别名。
问题 2 linux 中 alias 的用法为什么 shell 脚本里面别名不生效
回答 1 linux 中 alias 的用法是 shell 交互式环境特性,子 shell 和脚本默认不会加载别名,所以 linux 中 alias 的用法不能依赖在自动化脚本里面,脚本需要直接写完整原始命令。
问题 3 linux 中 alias 的用法怎么临时绕过别名执行原命令
回答 1 linux 中 alias 的用法如果别名覆盖了原命令,想要直接执行原始命令,可以在命令前面加反斜杠,例如 \rm,linux 中 alias 的用法这个方式可以跳过别名展开。
问题 4 linux 中 alias 的用法 unalias 是什么作用
回答 1 linux 中 alias 的用法 unalias 是取消已经定义的别名,unalias 别名名称只删除单个别名,unalias a 清空全部别名,linux 中 alias 的用法临时取消别名使用 unalias,永久取消还要删除配置文件里面的别名行。
【免责申明】
本文内容仅作为 Linux 技术学习参考,linux 中 alias 的用法如果别名命名不当,覆盖系统原命令,会改变原有命令行为,生产环境配置别名前确认别名名称,不要影响原有运维操作,不同 shell 别名配置文件存在差异,操作产生命令行为异常等后果由操作者自行承担。
