linux alias 是 shell 内置命令,不是独立的外部程序,核心作用就是给长命令设置简短别名,输入自定义短名称就可以自动执行对应的原始长命令,大幅减少重复输入,提升运维操作效率,这个命令在 bash zsh 等主流 shell 里面都支持,很多新手会混淆一个关键点,直接在终端执行 alias 定义的别名,只对当前这个终端会话生效,关闭终端之后别名就会失效,如果想要永久生效,必须写入对应的 shell 配置文件,很多系统默认就自带内置别名,比如 ll 就是 ls -l 的别名,日常敲 ll 其实就是调用 alias 机制实现的,理解 alias 的本质是 shell 层面的命令替换,掌握临时定义 查看别名 删除别名 永久保存 优先级规则,是 linux 基础运维非常实用的技能。
基础语法
临时创建别名格式
alias 别名 =' 原始完整命令 '
查看全部已经存在别名
alias
删除当前会话别名
unalias 别名
清除全部临时别名
unalias -a
常用参数对照表
| 操作 | 命令写法 | 说明 |
|---|---|---|
| 创建别名 | alias la='ls -a' | 给 ls -a 设置别名 la |
| 列出全部别名 | alias | 打印当前 shell 所有生效别名 |
| 删除单个别名 | unalias la | 移除 la 这个别名 |
| 清空全部别名 | unalias -a | 当前会话所有别名全部清除 |
深度拆解核心要点
临时别名特性
打开一个终端窗口,执行 alias 设置别名,只在这个 shell 进程有效,新开终端,或者退出重连 ssh,别名会消失,这个是最容易踩坑的地方,临时别名适合单次临时任务,不需要长期保留的时候使用。
永久生效配置文件
不同 shell 对应的配置文件不一样
bash shell
用户个人永久配置写入~/.bashrc
全局所有用户生效写入 /etc/bashrc 或者 /etc/profile.d/ 目录下自定义 sh 文件
zsh shell
用户个人永久配置写入~/.zshrc
修改完配置文件之后,需要执行 source 配置文件,让配置立刻加载,不用重启终端
示例 source ~/.bashrc
别名编写规则清单
1 等号两边不能有空格,别名和原始命令之间等号两侧不能加空格,否则 shell 识别报错
2 原始命令建议使用单引号包裹,命令里面如果带有参数 管道 重定向,单引号可以避免提前解析
3 别名名称不能和系统原有命令重名,如果重名,别名会覆盖原命令,要谨慎使用
4 别名不能带位置参数,也就是不能直接像函数一样传参,如果需要传参,要改用 shell 函数,这是 alias 和 shell 函数最大区别
经典实用别名示例清单
alias ll='ls -l'
alias la='ls -a'
alias l='ls -CF'
alias grep='grep --color=auto'
alias c='clear'
alias ports='netstat -tulpn'
别名执行优先级
shell 解析命令的时候,优先级顺序
别名 alias > shell 内置命令 > 外部可执行程序
也就是说,如果别名和外部命令同名,优先执行别名,所以如果想临时绕过别名,直接调用原始命令,可以在命令前面加反斜杠
示例 \ll 就会跳过 ll 别名,直接查找系统原始程序
常见报错与排错清单
1 报错 command not found 检查是不是把 alias 当成外部程序,它是 shell 内置命令,部分精简 shell 不支持
2 重启终端别名消失 没有写入 bashrc 配置文件,只是临时会话别名
3 别名不生效 修改配置文件之后忘记 source 加载
4 别名里面管道符失效 没有使用单引号包裹原始命令,shell 提前解析管道
alias 和 shell 函数对比表
| 对比项 | alias 别名 | shell 函数 |
|---|---|---|
| 是否支持传参 | 不支持 | 支持位置参数 |
| 适用场景 | 简单长命令简写 | 复杂逻辑 多分支 判断 |
| 编写难度 | 简单一行定义 | 需要编写代码块 |
| 优先级 | 高于函数 | 低于别名 |
【常见问题】
问题 1 linuxalias 命令设置之后为什么重启终端就没了
回答 1 linuxalias 也就是 alias,直接在终端执行定义的别名属于临时会话别名,只在当前 shell 生效,想要 linuxalias 永久生效,需要把别名写入~/.bashrc 配置文件并且 source 加载。
问题 2 linuxalias 命令是独立程序吗
回答 1 linuxalias 也就是 alias 属于 shell 内置命令,不是单独的外部二进制程序,所以不需要额外安装,只要当前 shell 支持就可以直接调用。
问题 3 linuxalias 别名能不能传递参数
回答 3 linuxalias 也就是 alias 本身不支持传入位置参数,如果需要传参的复杂命令,linuxalias 无法实现,需要改用 shell 函数来完成。
问题 4 怎么删除已经设置的 linuxalias 别名
回答 4 删除 linuxalias 别名使用 unalias 命令,执行 unalias 别名名称就可以移除当前会话别名,如果是永久别名,还要打开 bashrc 配置文件删掉对应的 alias 代码行。
【免责申明】
本文 linuxalias 也就是 alias 讲解基于 bash shell 主流版本编写,不同 shell 比如 dash 部分精简 shell 不支持 alias,配置文件路径随发行版存在差异,修改系统全局配置文件前建议备份,内容仅用于 linux 运维学习参考。


