别名会让交互式 shell 在执行命令行前,把一个命令单词替换为另一段字符串。它可以缩短常用命令,也可以提供一组偏好的选项。
命令行 · 第 18 课
alias 命令
学习在 Bash 中创建、检查、持久保存、绕过和删除命令别名。
在当前 shell 中创建别名
要创建一个仅在当前终端会话中有效的临时别名,只需指定一个名称并将其设置为命令字符串。
例如,创建一个名为 ll 的别名,代表 ls -la:
$ alias ll='ls -la'
定义后,输入 ll 作为命令就会展开为 ls -la。引号会在定义别名时把替换内容组合在一起。别名最适合简单的命令前缀替换;需要以更结构化的方式处理参数时,应使用 shell 函数。
哪个 Bash 命令会在当前 shell 中把 ll 定义为 ls -la 的别名?
在未来的 Bash 会话中加载别名
在提示符处定义的别名只属于当前 shell,shell 退出后便会消失。交互式非登录 Bash 会话通常读取 ~/.bashrc,因此这里是保存个人 Bash 别名的常用位置:
alias ll='ls -la'
要使更改生效,你必须关闭并重新打开终端,或者使用 source 命令让 shell 重新加载配置文件:
$ source ~/.bashrc
shell 启动行为可能因 shell、登录模式和发行版配置而异。例如,Zsh 用户通常应使用 Zsh 配置,而不是 Bash 的 .bashrc。
个人别名通常应定义在哪里,才能被未来的交互式非登录 Bash 会话加载?
检查别名和名称解析
运行不带参数的 alias 命令可以列出当前 shell 中的别名。
$ alias
alias ll='ls -la'
alias grep='grep --color=auto'
使用 type 命令可以查看输入某个命令时实际执行的内容:
$ type ll
ll is aliased to 'ls -la'
哪个命令会显示 Bash 当前把 ll 解析为别名、函数、内建命令还是可执行文件?
绕过和删除别名
要在一条命令行中绕过别名,可以在命令名前加反斜杠,或把它放在 Bash 的 command 内建命令之后:
$ \ls
$ command ls
当你需要底层命令的正常行为时,这很有用。别名应保持简短、可预测,不要在熟悉的命令名背后隐藏意外或破坏性行为。
当前 Bash 会话有一个名为 ls 的别名。哪个命令会在一次调用中绕过它?
使用 unalias 从当前 shell 中删除别名:
$ unalias ll
如果定义仍留在 ~/.bashrc 中,未来的 shell 还会重新创建它。想永久删除别名时,也要删除或修改相应配置行。
哪个命令会从当前 Bash 会话中删除别名 ll?
课程已完成
你已完成 alias 命令
现在,你可以用简单且可检查的别名定制 Bash。
使用正确引号定义临时别名。
让未来会话从
~/.bashrc加载个人别名。检查别名和命令解析结果。
在一次调用中绕过别名。
按需同时删除活动定义和已保存定义。