这篇文章是单独讲一下别名的作用和该怎么设置它
Shell中的命令
首先我们得知道,在shell中有两类命令可以执行
注:shell是Linux的应用程序,是帮助用户与内核沟通的工具
1. 内部命令(Built-in Commands)
- 来源:Shell解释器内置功能
- 特性:
- 随Shell启动加载至内存常驻
- 执行时无磁盘I/O操作
- 通常提供基础系统功能(如cd、echo等)
- 优势:
- 执行效率极高(无进程创建开销)
- 可直接访问Shell内部状态
2. 外部命令(External Commands)
- 来源:文件系统中的独立可执行程序
- 特性:
- 存储于
$PATH路径下(如/bin/ls) - 执行时需从磁盘加载至内存
- 运行后立即释放内存资源
- 运行一次后会存储进哈希表,方便二次调用
- 存储于
- 执行流程:
- Shell创建子进程
- 通过exec系统调用加载程序
- 程序退出后资源回收
- 优势:
- 功能模块化(可独立更新)
- 支持多语言开发(如C/Python等)
#which:查找文件,后面跟其他命令的名称可以查询命令所在的路径
which [选项] <命令名>
选项:
-a 显示环境变量PATH中所有匹配的路径(默认只显示第一个)
--skip-alias: 忽略Shell中的别名,只查找真实文件
--read-alias: 不从标准输入读取别名(默认开启)
# whereis:在特定目录中查找符合条件的文件。这些文件属于原始代码、二进制文件,或是帮助文件。只能用于查找二进制文件、源代码文件和man手册页,一般文件的定位得使用locate命令。
where [选项] <命令名>
选项:
-b 只查找二进制文件
-B <目录> 只在设置的目录下查找二进制文件
-f 不显示文件名前的路径名称
-m 只查找原始代码文件
-M
-s
-S
-u
Hash表
系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不存在,将会去PATH路径下寻找,利用hash缓存表可大大提高命令的调用速率
# hash:显示hash缓存
hash [选项]
选项:
-l 详细显示哈希缓存
# hash -l
-p 添加自定义哈希别名
# hash -p /path/to/command <别名>
-t 查看命令路径
# hash -t <指令名>
-d 删除指定命令的缓存
# hash -d <指令名>
-r 完全清空shell的哈希表
# hash -r
注意:hash的别名只能运行命令,不能像alias一样带上选项和参数
命令别名
对于长期使用或长度较长的命令可以定义为较短的别名方便执行
# alias:显示当前shell进程所有可用的命令别名
alias <别名>='命令全称'
# alias Downfirewalld='systemctl stop firewalld;setenforce 0'
同时别名也能进行撤销
# unalias [选项] <别名名称>
选项:
-a 取消所有别名,后面不需要再跟别名名称
注:该指令命名的别名只能在当前shell进程中有效
别名永久化配置:
# 将别名写入配置文件中即可永久生效
echo "alias <别名>='命令全称'" >> 配置文件
配置文件路径:
# 仅对当前用户有效:~/.bashrc
# 对所有用户有效:/etc/bashrc
# 添加完后还需刷新配置文件,使用以下指令:
source 配置文件
# 普通用户只有~/.bashrc,root用户才能碰/etc/bashrc