在终端里熟练使用快捷键,能大幅减少手在键盘和鼠标之间来回移动的时间。本文按功能对 Bash 中常用的 Ctrl 快捷键进行分组整理,方便速查。特别提醒:Ctrl+D 在不同语境下有两种完全不同的含义,文末会单独说明。
光标移动
| 快捷键 |
作用 |
Ctrl+A |
光标移到行首 |
Ctrl+E |
光标移到行尾 |
Ctrl+B |
光标左移一个字符(向行首方向),同左方向键 |
Ctrl+F |
光标右移一个字符(向行尾方向),同右方向键 |
删除与修改
| 快捷键 |
作用 |
Ctrl+H |
删除光标前一个字符,同 Backspace 键 |
Ctrl+D |
删除光标所在位置的字符。注意和 Backspace 以及 Ctrl+H 的区别:后两者删除的是光标前的字符 |
Ctrl+K |
清除光标后至行尾的内容 |
Ctrl+U |
清除光标前至行首间的所有内容 |
Ctrl+W |
移除光标前的一个单词 |
Ctrl+T |
交换光标位置前的两个字符(包括光标所在当前位置) |
Ctrl+Y |
粘贴或恢复上次的删除内容 |
历史命令搜索
| 快捷键 |
作用 |
Ctrl+R |
搜索之前输入过的命令。按下后会出现提示符,根据输入的关键字在 bash 的 history 中增量搜索,再按 Ctrl+R 跳到上一个匹配 |
清屏
| 快捷键 |
作用 |
Ctrl+L |
清屏,相当于执行 clear 命令 |
任务控制
| 快捷键 |
作用 |
Ctrl+C |
杀死当前前台进程 |
Ctrl+D |
退出当前 Shell,从 Shell 提示符中注销并关闭。使用该快捷键就不必键入 exit |
Ctrl+Z |
把当前进程转到后台暂停运行,使用 fg 命令恢复到前台。比如运行 top -d 1,然后按 Ctrl+Z 把它切到后台,再执行 fg 即可重新恢复 |
关于 Ctrl+D 的两种语境
可以看到 Ctrl+D 出现了两次,它是同一个按键在不同语境下的两种行为:
- 光标处有内容时:删除光标所在的字符,相当于向前的 Delete 键(
Ctrl+H 和 Backspace 删除的则是光标前的字符)。
- 光标处没有内容(空行)时:向 Shell 发送一个 EOF(文件结束符),效果等同于
exit,直接退出当前 Shell。这也是为什么在交互式程序里连按 Ctrl+D 会被退出。
记住这个规律就不会误操作:有字符删字符,没字符就退出。