前言
上篇文章我们学习了什么是 Shell
,并了解到 Bash
是我们最常使用的 Shell
,那么本篇文章我们就来一起学习下Bash的基本功能。
历史命令与命令补全
Bash
中可以查看历史输入的命令,并且可以通过上下剪头或者其他方式,快捷执行历史命令。当前终端的命令会缓存在内存中,当退出终端后,内存中的命令会写入到文件中。我们一般不会轻易清空历史命令文件,否则后续遇到问题难以追溯。
历史命令
|
|
- 历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中修改 HISTSIZE=1000
- 使用上、下箭头调用以前的命令
- 使用"!n"重复执行第n条历史命令
- 使用"!!“重复执行上一条命令
- 使用”!字符串"重复执行最后一条以该字符串开头的命令
|
|
命令补全
在Bash中,命令与文件补全是非常方便的功能,我们在输入命令或者文件名的时候,输入前几个字母,然后按下 “TAB” 键,Bash就会自动为我们补全。如果没有补全,说明有多个匹配项,再按一次 “TAB” 键,就会出现所有的可选项。
上图中,我们输入"ca",按下"TAB"键,Bash并没有为我们补全,再按一次,列出了所有符合的命令,我们手动输入"t"和一个空格,然后输入"hell",按下"TAB"键,就自动补全了 hello_world.sh,因为在当前文件夹只有一个匹配项。
命令别名
命令别名,其实就是给一个命令设置一个"小名",通过输入这个别名,实际执行的是对应的复杂命令。在 Bash
中,执行的命令优先级如下:
- 使用绝对或相对路径执行的命令
- 别名
- Bash内部命令
- 按照
$PATH
环境变量定义的目录顺序查找到的第一个命令
使用绝对路径或相对路径指定的命令,相当于指定了这个命令,优先级肯定最高,其次就是别名,然后就是Bash自带的一些命令,最后是$PATH包含的目录中的命令。可以看出别名的优先级很高,我们在定义别名的时候,尽量保证不要和已有的命令重名。
别名相关的命令如下:
|
|
|
|
可以看到在查看别名部分,ls
的别名为 “ls --color=auto
",这也就是为什么不同的文件类型会显示不同颜色的原因。rm
的别名是”rm -i
",其实"rm"命令默认不会提示是否确定删除,但是由于别名添加了"-i"参数,就会出现提示了。
默认设置的别名只在当前终端有效,关闭终端后就无法再次使用别名,如果想要别名永久生效,可以编辑/root/.bashrc文件,保存别名。
常用快捷键
命令 | 作用 |
---|---|
Ctrl+A | 把光标移动到命令行开头 |
Ctrl+E | 把光标移动到命令行结尾 |
Ctrl+C | 强制终止当前的命令 |
Ctrl+L | 清屏,相当于clear |
Ctrl+U | 删除或剪切光标之前的命令,不需要退格键一个个删除 |
Ctrl+K | 删除或剪切光标之后的命令 |
Ctrl+Y | 粘贴Ctrl+U或Ctrl+K剪切的内容 |
Ctrl+R | 在历史命令中搜索 |
Ctrl+D | 退出当前终端 |
Ctrl+Z | 暂停,并放入后台 |
Ctrl+S | 暂停屏幕输出 |
Ctrl+Q | 恢复屏幕输出 |
上图中,我们输入了一个命令,然后 “Ctrl+A
” 光标移动到了命令开头,"Ctrl+E
“光标移动到了命令最后,"Ctrl+U
“剪切光标之前的命令,"Ctrl+Y
” 又粘贴了回来。
比如当我们输入一个很长的命令,发现输错了之后,不需要使用退格键一个个删除,而是使用"Ctrl+U"直接删除所有,可以大大提高效率。
管道符
我们可以使用管道符,将命令1的正确输出作为命令2的输入。管道符使用前提是:第一个命令正确执行
。
|
|
示例:
|
|
grep 命令后面本来是需要跟一个文件的,但是我们可以使用其他命令的正确输出,作为 grep 的输入。
总结
本文介绍了 Bash 的部分基本功能,熟练掌握这些技巧,可以极大的提升我们的工作效率。
- 历史命令与命令补全
- 命令别名
- 常用快捷键
- 管道符
更多
微信公众号:CodePlayer