linux alias 命令是 shell 内置命令,作用是给长命令或者复杂命令创建简短别名,把一长串指令绑定成自定义短名称,输入别名的时候 shell 会自动替换成原始完整命令,日常运维经常需要重复执行带参数的长命令,每次手动输入容易出错还浪费时间,使用 alias 之后可以大幅简化操作,这个命令属于 bash zsh 等 shell 自带功能,不需要额外安装软件,临时别名只在当前终端会话有效,关闭终端就会失效,如果想要开机自动加载永久别名,就需要写入用户或者全局的 shell 配置文件,学习的时候先掌握临时创建查看删除别名的基础语法,再理解永久生效的配置方法,区分用户级和系统全局配置,同时掌握别名优先级和常见坑,比如别名和原命令同名覆盖,命令嵌套引号转义问题,这样就能熟练使用 linux alias 命令优化日常终端操作。
一 基础语法说明
alias 是 shell 内建命令,不是独立外部程序,不同 shell 语法基本一致,主流 bash zsh 都支持
基础格式
alias 别名 =' 原始命令 '
查看全部别名
alias
查看单个别名
alias 别名名称
删除当前会话临时别名
unalias 别名名称
彻底清除全部临时别名
unalias a
语法要点
1 等号两边不能有空格,这个是新手最容易踩错的点
2 原始命令如果带参数选项,必须用单引号或者双引号包裹
3 如果命令里面本身包含引号,需要做好转义处理
4 别名名称不能使用 shell 关键字,不能和系统已有命令完全冲突,除非你就是想要覆盖原命令
二 常用基础操作清单
| 操作目的 | 命令写法 | 说明 |
|---|---|---|
| 创建临时别名 | alias ll='ls -l' | 当前终端立刻生效 |
| 列出全部别名 | alias | 打印所有已经定义别名 |
| 查询单个别名 | alias ll | 查看 ll 对应的原始命令 |
| 删除单个临时别名 | unalias ll | 当前会话移除 ll 别名 |
| 清除全部临时别名 | unalias a | 清空所有临时别名 |
三 高频实用别名示例
alias gs='git status'
alias gp='git pull'
alias gco='git checkout'
alias c='clear'
alias ..='cd ..'
alias ...='cd ../..'
alias net='ifconfig'
alias update='sudo apt update && sudo apt upgrade'
alias psg='ps aux | grep'
alias rm='rm -i'
补充说明 rm='rm -i' 这个别名会给删除命令增加交互确认,防止误删,但是脚本环境里面别名默认不生效,不会影响 shell 脚本执行
四 永久生效配置方法
临时别名关闭终端就消失,想要每次登录自动加载,需要写入 shell 配置文件
| 配置文件 | 生效范围 | 适用 shell |
|---|---|---|
| ~/.bashrc | 当前登录用户 | bash |
| ~/.bash_profile | 登录 shell | bash |
| ~/.zshrc | 当前登录用户 | zsh |
| /etc/bash.bashrc | 系统全部用户全局生效 | bash |
| /etc/profile.d/xxx.sh | 全局,推荐方式 | 所有用户 |
操作步骤
第一步 打开用户配置文件,比如 vim ~/.bashrc
第二步 在文件末尾添加 alias 别名 =' 原始命令 '
第三步 保存退出
第四步 执行 source ~/.bashrc 重新加载配置,不用重启终端
第五步 输入 alias 验证别名是否加载成功
全局配置推荐放到 /etc/profile.d/ 目录新建 sh 文件,这样不用修改主配置文件,维护更干净,所有用户登录都会读取这个脚本
五 核心原理与优先级
shell 执行命令的时候,查找顺序是 别名 函数 内建命令 外部程序
也就是别名优先级最高,如果定义了和原命令同名的别名,输入这个名称会优先执行别名对应的内容
如果想要临时跳过别名,直接执行原始命令,可以在命令前面加反斜杠,例如 \rm
这个技巧非常重要,比如你设置了 rm 别名带确认,想强制删除不加确认,就使用 \rm
六 常见问题与坑点
1 等号两边加空格,报错 command not found
2 只写在~/.bash_profile,但是 bash 默认读取~/.bashrc,导致别名不加载,很多发行版登录 shell 会 source bashrc,如果没有就需要手动补充加载语句
3 别名里面使用管道 连续命令,没有正确加引号,执行报错
4 别名只在交互式 shell 生效,shell 脚本默认不会加载别名,这是很多人误以为别名失效的核心原因,脚本里面如果需要使用,需要开启 shopt s expand_aliases
5 全局配置修改之后,已经登录的旧终端不会自动加载,必须 source 或者重新登录
6 别名名称和系统命令冲突,造成原有命令行为改变,排查问题的时候可以用 type 命令查看 type ll 判断它是不是别名
七 进阶用法
1 别名支持带参数,但是基础 alias 本身不能直接接收动态参数,如果需要参数逻辑,推荐改用 shell 函数,函数可以接收位置参数,比 alias 更灵活
2 别名可以组合多条命令,用 && 连接,例如 alias backup='cd /data && tar zcvf backup.tar.gz ./'
3 查看命令类型 type 别名名,可以确认当前名称是别名还是函数还是外部程序
【常见问题】
问题 1 linux alias 临时别名重启终端为什么消失
回答 1 linux alias 创建的临时别名只存在当前 shell 会话,关闭终端之后会话销毁,linux alias 不会自动保存,想要永久保留 linux alias 需要写入 bashrc 或者 zshrc 配置文件,然后 source 加载。
问题 2 linux alias 为什么在 shell 脚本里面不生效
回答 2 linux alias 默认只对交互式终端生效,shell 脚本是非交互 shell,默认不加载别名,linux alias 如果需要在脚本生效,需要手动开启 expand_aliases 选项,一般推荐脚本改用函数替代 linux alias。
问题 3 linux alias 等号两边能不能加空格
回答 3 linux alias 语法要求等号左右不能加空格,如果添加空格会直接报错,linux alias 正确写法是 alias 别名 =' 命令 ',这是使用 linux alias 最常见新手错误。
问题 4 linux alias 和 unalias 是什么关系
回答 4 linux alias 用来创建别名,unalias 是配套命令,作用是删除当前会话已经创建的 linux alias 别名,unalias a 可以一次性清除全部 linux alias 临时别名。
问题 5 linux alias 想要跳过别名直接运行原命令怎么做
回答 5 已经设置 linux alias 同名别名之后,想绕过 linux alias 执行原始程序,可以在命令前面加反斜杠,例如 \rm,shell 就不会优先匹配 linux alias,直接调用原生 rm 命令。
【免责申明】
本文为 linux alias 命令基础教程,不同发行版 shell 配置文件路径和默认加载机制存在差异,修改系统全局配置前建议备份原文件,内容仅用于学习参考,生产环境操作请谨慎测试。


