| 核心结论 | 说明 |
|---|
| 大多数快捷键来自 Readline | Bash、Python REPL、MySQL CLI 等交互程序常复用这套编辑能力 |
Ctrl+s 不是暂停程序,而是终端流控 | 它发送 XOFF 暂停终端输出,Ctrl+q 发送 XON 恢复输出 |
Ctrl+c 与 Ctrl+z 不是一回事 | Ctrl+c 发送 SIGINT 中断进程,Ctrl+z 发送 SIGTSTP 挂起进程 |
Shell 粘贴通常不是 Ctrl+v | Ctrl+v 在 Readline 中表示“按字面插入下一个字符”,终端粘贴常用 Ctrl+Shift+v |
1.简介
Linux 终端快捷键主要用于两类场景:
- 快速编辑当前命令行;
- 控制正在运行的前台进程。
需要注意:终端快捷键并不完全等同于桌面软件快捷键。很多按键实际来自三层机制:
| 来源 | 作用 | 例子 |
|---|
| 终端驱动 | 控制前台进程、流控、EOF | Ctrl+c、Ctrl+z、Ctrl+d、Ctrl+s |
| Readline | 编辑命令行 | Ctrl+a、Ctrl+e、Ctrl+r |
| 终端模拟器 | 复制粘贴、窗口管理 | Ctrl+Shift+c、Ctrl+Shift+v |
2.说明
2.1 程序控制
| 快捷键 | 作用 | 说明 |
|---|
Ctrl+c | 中断前台程序 | 发送 SIGINT,程序通常会退出 |
Ctrl+z | 挂起前台程序 | 发送 SIGTSTP,程序进入 stopped 状态 |
Ctrl+d | 发送 EOF | 空行时表示输入结束,也可退出 shell / python / mysql |
Ctrl+s | 暂停终端输出 | XOFF 流控,不是暂停进程 |
Ctrl+q | 恢复终端输出 | XON 流控,解除 Ctrl+s |
示例:
1
2
3
4
| sleep 100
# Ctrl+z
jobs
fg %1
|
Ctrl+z 后,进程没有结束,只是被挂起。常用命令:
| 命令 | 作用 |
|---|
jobs | 查看当前 shell 管理的后台/挂起任务 |
fg %1 | 将任务 1 拉回前台 |
bg %1 | 让任务 1 在后台继续运行 |
kill %1 | 终止任务 1 |
如果终端突然“卡住”但程序看起来没退出,优先按 Ctrl+q。很多时候是误按了 Ctrl+s,终端输出被流控暂停。
2.2 光标移动
| 快捷键 | 作用 | 等价键 |
|---|
Ctrl+a | 移动到行首 | Home |
Ctrl+e | 移动到行尾 | End |
Ctrl+b | 左移一个字符 | ← |
Ctrl+f | 右移一个字符 | → |
Alt+b | 左移一个单词 | 部分终端为 Ctrl+← |
Alt+f | 右移一个单词 | 部分终端为 Ctrl+→ |
Ctrl+x Ctrl+x | 在当前位置和上次位置之间切换 | - |
常用场景:
1
| kubectl -n default get pods --selector app=demo -o wide
|
如果需要回到命令开头补 time 或 sudo,用 Ctrl+a 比长按方向键快得多。
2.3 删除与剪切
| 快捷键 | 作用 |
|---|
Ctrl+u | 删除光标前所有内容 |
Ctrl+k | 删除光标后所有内容 |
Ctrl+w | 删除光标前一个单词 |
Alt+d | 删除光标后一个单词 |
Ctrl+h | 删除光标前一个字符,等价 Backspace |
Ctrl+d | 删除光标下一个字符;空行时发送 EOF |
Readline 中的“删除”很多时候其实是 kill,内容会进入 kill-ring,可以用 Ctrl+y 粘回。
2.4 粘贴与撤销
| 快捷键 | 作用 | 说明 |
|---|
Ctrl+y | 粘贴最近 kill 的文本 | 配合 Ctrl+u、Ctrl+k、Ctrl+w 使用 |
Alt+y | 在 kill-ring 中切换历史剪切内容 | 需要先执行 Ctrl+y |
Ctrl+_ | 撤销上一次编辑 | 部分终端可用 Ctrl+Shift+- |
Ctrl+v | 按字面插入下一个字符 | 例如插入 Tab、控制字符 |
Ctrl+Shift+v | 终端模拟器粘贴 | GNOME Terminal、Windows Terminal 常见 |
示例:插入一个真实 Tab 字符:
2.5 历史命令
| 快捷键 / 写法 | 作用 |
|---|
Ctrl+r | 反向搜索历史命令 |
Ctrl+p | 上一条历史命令,等价 ↑ |
Ctrl+n | 下一条历史命令,等价 ↓ |
history | 查看历史命令列表 |
!! | 执行上一条命令 |
!num | 执行 history 中编号为 num 的命令 |
!?string? | 执行最近一条包含 string 的命令 |
!$ | 上一条命令的最后一个参数 |
!* | 上一条命令的所有参数 |
常见用法:
1
2
| mkdir -p /tmp/demo-dir
cd !$
|
等价于:
上一条命令忘记加 sudo:
需要注意:历史展开会在执行前被 shell 替换,执行危险命令前建议先确认。
2.6 常用组合
| 场景 | 操作 |
|---|
| 当前命令写错,整行重来 | Ctrl+u |
命令太长,回到开头补 sudo | Ctrl+a |
| 命令末尾继续追加参数 | Ctrl+e |
误按 Ctrl+s 后终端不动 | Ctrl+q |
| 搜索历史里的 kubectl 命令 | Ctrl+r 后输入 kubectl |
| 暂停前台任务临时回 shell | Ctrl+z,处理完后 fg |
| 删除上一个参数 | Ctrl+w |
| 恢复刚删除的内容 | Ctrl+y |
3.总结
Ctrl+c 是中断进程,Ctrl+z 是挂起进程,Ctrl+s 是暂停终端输出;- 命令行编辑大多来自 Readline,
Ctrl+a/e/u/k/w/r 是最高频快捷键; Ctrl+v 在 shell 中不是普通粘贴,而是插入下一个字符的字面值;- 历史展开
!!、!$ 很高效,但执行前需要确认,避免误操作; - 终端快捷键的关键不是全部记住,而是掌握“移动、删除、历史、进程控制”四类高频动作。
4.参考