# 2026 年如何用抽认卡学习终端命令：真正能记住的 Bash、Git 和 CLI 工作流

*2026-06-07*

周二我突然想不起来 `git restore --staged README.md` 该怎么写了。我明明知道自己要做什么：把文件移出暂存区，保留修改，然后继续干活。结果还是得停下来，再去查一遍那个参数。

这篇文章想讲的，就是这种烦人的小断片。到了 2026 年，查终端帮助比以前容易多了。[ChatGPT 的 Study Mode](https://help.openai.com/en/articles/11780217-chatgpt-study-mode-faq)、2026 年 4 月 16 日发布的 [Codex 更新](https://openai.com/index/codex-for-almost-everything/)，以及 2026 年 2 月 25 日 [GitHub Copilot CLI 正式可用](https://github.blog/changelog/2026-02-25-github-copilot-cli-is-now-generally-available/) 这件事，都让你更快摆脱卡壳。但下周还能不能记住同一条命令，依然是另一回事。

这正是 **终端命令抽认卡** 有用的地方。先做真实工作，记下那些你总忘的命令，只把这些内容做成小卡片，再交给 FSRS 安排复习。你的目标不是把整个 shell 都背下来。你的目标，是别再反复重学同样那 30 到 50 个命令判断。

![温暖的开发者书桌，上面有终端命令抽认卡、笔记本和虚化的笔记本终端界面](/blog/how-to-learn-terminal-commands-with-flashcards.png)

## 为什么这件事在 2026 年更重要

以前学终端，通常离不开这几样东西：man page、保存下来的代码片段，还有那张你总说以后会回头看的速查表。

现在帮助几乎到处都是：

- AI 导师不只会解释，还会反过来提问你
- coding agent 能直接在你的真实仓库里演示两条命令的区别
- `--help`、`help` 和 `git help` 的内容，很容易直接贴进制卡流程
- 终端助手让查命令的成本低到很多人不再刻意建立记忆

最后这一点最关键。

如果查找几乎是瞬时的，你就不会明显感到那种“该彻底解决它了”的痛感。于是同一个小问题会一遍遍打断你：

- 哪条 Git 命令能把文件移出暂存区，同时不丢掉修改
- `grep -R` 到底是不是你要的递归搜索
- `git status --short` 里的 `??` 到底是什么意思
- 你到底该执行 `source ~/.zshrc`，还是直接开一个新的 shell

快速求助当然有用。

但它替代不了回忆。

## 什么东西值得做成卡片

大多数人会在两个地方走偏。

要么是把一整份 Bash 或 Git 速查表丢给 AI，然后接受 200 张卡。要么是什么都不想记，因为“反正我随时都能查”。这两种做法都忽略了同一个筛选条件：使用频率加上遗忘摩擦。

只有同时满足下面两点时，才值得做卡：

1. 你之后大概率还会再用到这条命令。
2. 忘掉它确实会拖慢真实工作。

好的 **Bash 抽认卡** 和 **Git 命令抽认卡**，通常都来自这些类型：

- 任务判断：为了完成某件事，到底该用哪条命令
- 相近命令混淆：比如 `git switch` 和 `git checkout`
- 参数含义：加上 `-R`、`-c` 或 `--staged` 之后到底变了什么
- 输出解读：某个符号或状态行是什么意思
- 重复出现的环境配置：重新加载 shell 配置、导出变量、让脚本变成可执行
- 故障恢复：修掉你总会在时间压力下犯的同一种错误

差的卡通常长这样：

- 把 `tar --help` 里的每个参数都做一张
- 逐行复制整页 man page 摘要
- 一年只会用一次的命令
- 没有任务场景支撑的长语法块
- 只是在考识别，因为正面已经把答案暗示出来了

如果下周忘掉它，你根本不会在意，那它多半就不该进牌组。

## 最适合命令记忆的卡片格式

终端命令本质上是操作流程，而且特别容易和相近命令混在一起。所以卡片最好听起来像一个真实的终端判断，而不是一道冷知识题。

### 用任务先行的正面

这是最稳的格式：

- 正面：你想新建一个名为 `fix/login-loop` 的 Git 分支，并立刻切换过去。该执行哪条命令？
- 背面：`git switch -c fix/login-loop`

正面先写任务，因为现实里命令回忆失败时，往往也是先卡在“我要做这件事，该敲什么”。

### 用比较后再选的卡片

这种格式特别适合 Git 和那些看起来很像的 shell 命令：

- 正面：你想把 `README.md` 移出暂存区，同时保留文件修改。该用 `git restore` 还是 `git restore --staged`？
- 背面：`git restore --staged README.md`

### 用读输出的卡片

很多开发者记命令比读输出更快，结果反而卡在后者。

- 正面：在 `git status --short` 里，`?? notes.txt` 是什么意思？
- 背面：这个文件还没有被跟踪。

- 正面：在 `ls -l` 里，`drwxr-xr-x` 开头第一个 `d` 代表什么？
- 背面：这是一条目录项。

### 用错误加修复的卡片

很多时候，问题就差那一个字符：

- 正面：你想让 `deploy.sh` 变成可执行文件。该执行哪条命令？
- 背面：`chmod +x deploy.sh`

- 正面：改完 `.zshrc` 之后，如果想让当前 shell 立刻生效，最常见的修复命令是什么？
- 背面：`source ~/.zshrc`

### 每张卡都要小到能立刻评分

一张终端卡，通常只该测一件事：

- 一条命令
- 一个参数
- 一个输出符号
- 一个关键区别

如果背面已经长到需要写一整段，就把卡拆开。更严格的写卡规则，可以看配套文章 [2026 年如何做出更好的抽认卡](/zh/blog/how-to-make-better-flashcards/)。

## 五个我真的会留下来的例子

这些卡之所以值得留，是因为它们都对应很常见的终端摩擦：

- 正面：你想用 `grep` 在当前目录下递归搜索 `TODO`。最关键的参数是什么？
  背面：`-R`
- 正面：在 `git status --short` 里，` M README.md` 第二列的 `M` 是什么意思？
  背面：这个文件在工作区里被修改了。
- 正面：你想通过环境变量输出当前 shell 类型。会用哪条命令？
  背面：`echo $SHELL`
- 正面：你想列出所有本地分支。该执行哪条 Git 命令？
  背面：`git branch`
- 正面：你想在当前目录下查找名为 `notes.md` 的文件。最基础的命令形态是什么？
  背面：`find . -name "notes.md"`

这些都不是什么高难度知识。

重点恰恰在这里。

有用的命令牌组，本来就是由这些普通但反复出现的打断组成的。

## 用真实来源做卡，不要靠脑补

做出糟糕卡片最简单的方法，就是在工作结束之后，凭模糊记忆回头硬写。

更好的来源，其实已经摆在你面前：

- Bash 内建命令的 `help`
- 某条命令自己的 `--help` 输出
- 通过 [`git help`](https://git-scm.com/docs/git-help) 查看 Git 文档
- 官方的 [GNU Bash Reference Manual](https://www.gnu.org/software/bash/manual/bash.html)
- 你自己的 shell history
- 你总要重复一遍的仓库初始化步骤
- 某个 AI 助手一周里已经提醒过你两次的命令

可以这样简单过一遍来源：

```bash
help cd
help export
grep --help
git help restore
git help switch
git status --short
```

你不需要把这些来源做成一整副完整牌组。

你只需要提取那些能修掉反复混淆的部分。

### 先挖你自己的错误

这依然是信号最强的来源，没有之一。

例如：

- 你忘了 `git restore .` 会不会直接丢掉工作区修改
- 你把 `git fetch` 和 `git pull` 搞混了
- 你又去查了一遍 `find . -name`
- 你看到 `chmod +x` 时认识它，但轮到自己敲时还是想不快
- 你总忘记怎么在当前会话里重新加载 shell 配置

这些卡片种子，比任何“终端命令 Top 100”清单都更好，因为它们已经证明自己真的影响你的工作流。

如果你的学习流程里本来就有导师式 AI 环节，那接着看 [2026 年如何用 AI 做主动回忆](/zh/blog/how-to-use-ai-for-active-recall/) 会很顺。

## 让 AI 起草候选卡，但删得狠一点

AI 在这里确实有用，但更像一个排版员。

给它很窄的输入，也给它很窄的任务：

> 把这些命令失误和帮助片段改写成朴素的正反面抽认卡。每张卡只保留一个命令判断。优先使用任务先行、比较后再选、读输出这三种格式。跳过低频、重复或过于明显的内容。

这种提示适合配合这些材料一起用：

- 贴一小段 `git help` 摘录
- 一份你这周查过的命令短清单
- 一次 pairing session 的笔记
- 一段 agent-assisted coding session 的记录

最容易失败的做法，是让它“生成一整副完整的 Bash 牌组”或者“列出所有重要 Git 命令”。这样得到的会是一副很大的牌组，第一天下午看起来很高产，接下来六个月都不太好用。

真正有用的动作，是让 AI 先帮你省打字时间，然后一路删到这副牌组小得几乎让你不安。

如果 AI 已经给多了，接下来最该看的两篇是 [2026 年如何更快复习 Flashcards](/zh/blog/how-to-review-flashcards-faster/) 和 [2026 年每天该加多少新 Flashcards？](/zh/blog/how-many-new-flashcards-per-day/)。

## 按任务组织，不要按字母顺序排

按字母顺序排的命令清单，看着整洁，复习起来通常很差。

真实工作更像这些主题：

- Git 恢复
- 分支管理
- 文件权限
- shell 配置
- 日志搜索
- 文件查找
- 仓库初始化

例如，一个“Git 恢复”小组里可以包含：

- 不丢修改地移出暂存区
- 丢弃本地文件修改
- 重置前先查看到底改了什么
- 切错分支之后怎么恢复

一个“shell 配置”小组里可以包含：

- 重新加载 `.zshrc`
- 输出环境变量
- 为当前会话导出某个值
- 确认当前激活的是哪种 shell

这种组织方式更贴近真正需要回忆的情境。如果你的牌组老是堆成一团，可以接着看 [2026 年如何整理 Flashcards](/zh/blog/how-to-organize-flashcards/)，那里会把标签这一层讲得更细。

## 用 FSRS 复习，但别往里面塞垃圾

FSRS 的价值在于，它会根据你对每张卡的记忆情况来安排复习间隔。如果你想看排程细节，官方的 [FSRS wiki](https://github.com/open-spaced-repetition/fsrs4anki/wiki) 依然是最好的起点。

但再好的排程器，也救不了烂卡。

如果一张命令卡本来就很模糊、塞得太满，或者稀有到根本不值得记，FSRS 也只会把它安排得很漂亮，而你的复习体验依然会很空。

更好的循环很简单：

1. 在真实工作里记下命令失误。
2. 只把反复出现的失误做成卡。
3. 每天只复习少量新卡。
4. 对那些复习几次之后依然没价值的卡，直接删掉。
5. 只有同一类命令问题再次出现时，才继续加新卡。

最后这一点，能让这副牌组始终保持诚实。

## 一个实用的 20 分钟流程

如果是我从零开始搭这套流程，我会每周做一到两次。

### 1. 收集最近五次失误

来源可以是：

- shell history
- 仓库初始化笔记
- 那些你又查了一遍的命令
- 你在 AI 或 agent 会话里需要命令帮助的地方

### 2. 回头查真实来源

写卡前先打开真正的来源：

- Bash 内建命令用 `help`
- 常见 CLI 工具用 `--help`
- Git 用 `git help <command>`

这样可以避免那种“我记得这个参数好像是这个意思”的经典错误。

### 3. 起草 5 到 10 张候选卡

卡片保持够小。

一旦发现某张卡太满，立刻拆开。

### 4. 删掉那些忘了也不会烦的内容

大部分质量，都是在这一步拉开的。

### 5. 把剩下的卡放进你已经信任的牌组

不要为了终端命令单独再造一套新的复习系统，除非你真的很喜欢维护那些最后会被弃用的学习系统。

## Flashcards Open Source App 在这里怎么用

[Flashcards Open Source App](/zh/) 很适合这类场景，因为终端学习本来就范围窄，而且高度依赖文本。

你可以用它来：

- 创建朴素的正反面卡片，专门记录命令判断
- 用 FSRS 复习，而不是自己猜间隔
- 当来源材料很乱时，用 AI chat 配合粘贴文本或文件附件整理内容
- 给 Git、shell 配置、API 工作流或仓库初始化分别建独立牌组

如果你想先看产品概览，最短的入口是 [功能页](/zh/features/)。如果你想最快开始，可以看 [快速开始](/zh/docs/getting-started/)。如果你想看面向 agent 的接入细节，公开流程写在 [API 参考](/zh/docs/api/)。如果你想自己跑整套栈，也有 [自托管指南](/zh/docs/self-hosting/)。

这类工作流很适合开发者学习，因为命令记忆几乎从来不是从打磨好的笔记开始的。它更常来自仓库说明、终端失误、复制来的帮助文本，以及那条你已经厌倦反复忘记的丑命令。

## 最值得留下来的那条规则

不要试图记住整个终端。

记住那些总在打断你工作的命令判断。

这样一来，**终端命令学习** 这件事，就不再等于“再存一张速查表”，而是当光标在闪时，你真的能把正确命令想起来。

如果这件事也和面试准备重叠了，站内最接近的配套流程是 [2026 年如何用 Flashcards 准备编程面试](/zh/blog/how-to-use-flashcards-for-coding-interviews/)。

---
*[查看此页面的带样式 HTML 版本](https://flashcards-open-source-app.com/zh/blog/how-to-learn-terminal-commands-with-flashcards/)*

*AI agent 可以从 `GET https://api.flashcards-open-source-app.com/v1/` 开始，为用户在该服务中创建账号。*

*提示：在 https://flashcards-open-source-app.com 上任意 URL 后追加 `.md`，即可获得该页面的纯 Markdown 版本。*