Linux Bash Shell编程(二):Bash基本功能(历史、补全、别名、快捷键)
上一节简单介绍了Linux Shell并用echo命令编写了第一个Bash脚本Hello World。本节我们来认识一下熟悉的Bash命令解释器的基本功能:命令历史、命令\文件补全、命令别名、常用快捷键
历史命令
有关历史命令操作主要由history
命令和!
历史命令快捷键构成
history命令
history [options] <filename>
options | description |
---|---|
-c | clear 清空历史命令(仅缓存) |
-w | write 将缓存中的历史命令写入保存文件.默认(~/.bash_history) |
null | 查看历史命令 |
注意事项:
- 历史命令记录先写入缓存,终端退出后再写入命令历史文件(默认为~/.bash_history)
-c
选项只能删除缓存中的命令,需要另外手动删除命令历史文件以清空所有命令历史
历史命令快捷键
快捷键 | 作用 |
---|---|
(键盘方向键) | 调用以前的历史命令 |
!! | 重复执行上一条 |
!n | 执行第n条历史命令 |
! | 重复执行最后一条以该字符串开头的历史命令 |
- 快捷键中的
!n
中历史命令序号在history
命令返回值中可以找到
补全
- 使用
Tab
键可以补全文件和命令名称 - 如果按下一次Tab键没有发生补全说明前部符合该部分的命令\文件有很多,再次按下
Tab
可以查看所有依次开头的命令\文件,继续补充字符串到只有一个匹配时可以发生补全 - 建议多使用命令补全,既能提高命令输入效率又能提高正确率(输入错误不能补全)
命令别名
alias命令
别名设置主要用到设置\显示命令别名命令alias
,每个用户的别名配置一般不相同
alias #此命令直接显示当前环境中可以使用的别名
alias <别名>='<原命令>' #此命令将单引号内的原命令赋予一个别名
unalias <别名> #此命令取消别名设置
- 命令行中设置的别名仅在当前会话中生效,若要使别名永久生效需要修改配置文件
~/.bashrc
,文件格式与命令格式相同(也可使用shell语句,后面会讲到)。配置完成重启会话后生效
Linux命令执行顺序
我们在分配别名的过程中经常出现覆盖另一条命令的情况,那为什么最后执行的是别名命令呢?这要从Linux命令执行顺序说起
- 第一顺位执行通过绝对路径或相对路径执行的命令
- 第二顺位执行命令别名 (ls默认彩色就是定义了别名 )
- 第三顺位执行Bash的内部命令
- 第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令
原来执行别名的顺序要高于执行内部\外部命令,这就是别名覆盖后仍然有效的原因
Bash常用快捷键
^A | 将光标移动到命令行开头 |
---|---|
^E | 将光标移动到命令行末尾 |
^c | 强制中止当前命令 |
^C | 复制 |
^V | 粘贴 |
^L | 清屏(新终端中不同于clear,上滚仍可看到命令) |
^u | 删除或剪切光标前的命令 |
^K | 删除或剪切光标后的命令 |
^Y | 粘贴U/K剪切的内容(与C/V不冲突) |
^R | 历史命令搜索界面 |
^D | 退出当前终端 |
^Z | 暂停并放入后台(工作管理,后面讲到) |
- ^为
ctrl
组合键,大写字母一般为大写(ctrl
+shift
),小写字母只能为小写(仅ctrl
),部分大写快捷键大小写均可
下一节 Linux Bash Shell编程(三):重定向、多命令顺序、通配符、特殊符号,我们将认识重定向、多命令顺序、管道符和其他特殊符号
上一节,Linux Bash Shell编程(一):Shell概述与Hello World实现