Linux别名和哈希表
这篇文章是单独讲一下别名的作用和该怎么设置它
Shell中的命令
首先我们得知道,在shell中有两类命令可以执行
1 | 注:shell是Linux的应用程序,是帮助用户与内核沟通的工具 |
1. 内部命令(Built-in Commands)
- 来源:Shell解释器内置功能
- 特性:
- 随Shell启动加载至内存常驻
- 执行时无磁盘I/O操作
- 通常提供基础系统功能(如cd、echo等)
- 优势:
- 执行效率极高(无进程创建开销)
- 可直接访问Shell内部状态
2. 外部命令(External Commands)
- 来源:文件系统中的独立可执行程序
- 特性:
- 存储于
$PATH
路径下(如/bin/ls) - 执行时需从磁盘加载至内存
- 运行后立即释放内存资源
- 运行一次后会存储进哈希表,方便二次调用
- 存储于
- 执行流程:
- Shell创建子进程
- 通过exec系统调用加载程序
- 程序退出后资源回收
- 优势:
- 功能模块化(可独立更新)
- 支持多语言开发(如C/Python等)
1 |
|
Hash表
系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不存在,将会去PATH路径下寻找,利用hash缓存表可大大提高命令的调用速率
1 | # hash:显示hash缓存 |
注意:hash的别名只能运行命令,不能像alias一样带上选项和参数
命令别名
对于长期使用或长度较长的命令可以定义为较短的别名方便执行
1 | # alias:显示当前shell进程所有可用的命令别名 |
同时别名也能进行撤销
1 | # unalias [选项] <别名名称> |
注:该指令命名的别名只能在当前shell进程中有效
别名永久化配置:
1 | # 将别名写入配置文件中即可永久生效 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 不存在的博客!