alias 是一个非常重要的内置命令(built-in command),它的作用是为一个或一长串命令创建一个简短的“别名”或“快捷方式”,这对于那些经常使用、参数复杂或者容易拼错的命令来说,可以极大地提高工作效率。

alias 命令的基本语法
alias 命令的基本语法非常简单:
alias [别名]='[原始命令]'
别名:你想要创建的新名称。原始命令:你想要简化的命令,可以包含选项、参数、管道等。
重要提示:alias 和 之间不能有空格, 和 '原始命令' 之间也不能有空格,整个赋值语句最好用单引号 括起来,以防止 shell 错误地解释其中的特殊字符(如 , , 等)。
alias 命令的常用参数(选项)
alias 命令本身只有几个非常实用的选项。
alias -p
这是 alias 命令最常用的选项,用于列出当前 shell 会话中所有已定义的别名。

- 等价写法:直接输入
alias命令不带任何参数,效果和alias -p一样。 - 作用:查看你当前设置了哪些快捷方式。
示例:
$ alias alias ll='ls -alF' alias la='ls -A' alias l='ls -CF' alias grep='grep --color=auto' alias ..='cd ..'
alias -g
-g 选项用于定义全局别名。
- 作用:全局别名不仅在当前 shell 中有效,还会被该 shell 启动的所有子 shell 和脚本继承,而普通别名(不带
-g)只在当前 shell 中有效,子 shell 无法继承。 - 使用场景:较少使用,因为全局别名可能会在脚本中引起意想不到的行为,通常只在特定场景下使用,例如为常用的管道操作符创建别名。
示例:
# 定义一个全局别名,将 "rn" 替换为 "rename -v" $ alias -g rn='rename -v' # 现在可以在任何地方使用 "rn" $ mv old_file.txt new_file.txt rn # 这条命令会被 shell 自动展开为: mv old_file.txt new_file.txt rename -v
如何创建、查看和使用别名
查看别名
如上所述,直接使用 alias 或 alias -p。
创建临时别名(仅当前会话有效)
直接使用 alias 命令,这种方式创建的别名只在当前的终端会话中有效,关闭终端后就会消失。
示例:
# 创建一个别名,用 "ll" 查看详细列表 $ alias ll='ls -alF' # 现在就可以使用 ll 了 $ ll total 16 drwxr-xr-x 2 user user 4096 Oct 26 10:30 . drwxr-xr-x 10 user user 4096 Oct 26 10:30 .. -rw-r--r-- 1 user user 220 Oct 26 10:30 .bash_logout -rw-r--r-- 1 user user 3771 Oct 26 10:30 .bashrc ...
创建永久别名(推荐)
如果你想让别名永久生效,需要将其写入 shell 的配置文件中,最常见的是 ~/.bashrc 文件(针对 Bash shell)。
步骤:
-
编辑配置文件:
nano ~/.bashrc # 或者使用 vim, gedit 等你喜欢的编辑器
-
添加别名: 在文件末尾添加你的
alias定义,建议添加一些注释,方便日后维护。# .bashrc # ... (文件原有内容) ... # 自定义别名 alias ll='ls -alF --color=auto' alias grep='grep --color=auto' alias ..='cd ..' alias ...='cd ../..' alias ....='cd ../../..' alias please='sudo !!' # 一个有趣的别名,用 "sudo" 执行上一条命令
-
使配置文件生效: 保存文件后,你需要让当前的 shell 重新加载这个配置文件,这样新添加的别名才能立即使用。
# 方法一:重新加载配置文件(推荐) source ~/.bashrc # 方法二:重新登录你的用户账户 # exit # 退出当前终端,然后重新登录
如何取消别名
当你不再需要一个别名时,可以使用 unalias 命令来删除它。
unalias [别名]
取消指定的别名。
示例:
# 取消 ll 别名 $ unalias ll # 再次查看 ll 别名,会发现已经不存在了 $ alias ll bash: alias ll: not found
unalias -a
取消所有当前 shell 会话中定义的别名。
示例:
# 清除所有别名 $ unalias -a
重要注意事项和技巧
-
别名优先级:别名拥有很高的优先级,如果你创建了一个与现有命令同名的别名(
alias ls='ls --color'),那么只要你在当前 shell 中,输入ls就会永远执行你定义的版本,而不是系统原始的ls命令,要执行原始命令,可以使用command关键字。示例:
# 假设你设置了 alias ls='ls --color' $ ls # 显示带颜色的文件列表 # 使用 command 可以绕过别名,执行原始命令 $ command ls # 显示不带颜色的文件列表
-
调试别名:如果别名定义复杂或者出现错误,可以使用
type命令来查看一个命令是如何被 shell 解析的,这有助于确认是否是别名在作祟。示例:
$ type ls ls is aliased to `ls --color=auto' $ type grep grep is /usr/bin/grep # grep 没有被别名化
-
别名的局限性:别名非常适合用于简单的命令,但对于复杂的、需要动态参数的脚本,别名可能力不从心,在这种情况下,应该考虑创建一个Shell 函数 (Shell Function),因为它更灵活、更强大。
函数示例:
# 在 ~/.bashrc 中定义一个函数 my_mcd() { mkdir -p "$1" && cd "$1" } # 使用 $ my_mcd new_project_directory # 这会创建目录 "new_project_directory" 并自动进入它
| 功能 | 命令 | 说明 |
|---|---|---|
| 查看所有别名 | alias 或 alias -p |
列出当前会话的所有别名。 |
| 创建别名 | alias 别名='命令' |
创建一个临时别名,仅在当前会话有效。 |
| 创建全局别名 | alias -g 别名='命令' |
创建一个全局别名,子 shell 也可继承。 |
| 取消别名 | unalias 别名 |
取消指定的别名。 |
| 取消所有别名 | unalias -a |
清除当前会话的所有别名。 |
| 使别名永久生效 | 编辑 ~/.bashrc 等配置文件,source。 |
推荐做法。 |
| 执行原始命令 | command 命令名 |
绕过别名,执行系统原始命令。 |
| 查看命令类型 | type 命令名 |
查看一个命令是别名、函数还是可执行文件。 |
掌握 alias 是提升 Linux 命行操作效率的第一步,希望这份详细的解释能帮助你更好地使用它!
