CLI:用一行文字,明确告诉电脑做什么
命令行不是“黑客专用界面”,也不是需要背诵的魔法。它只是另一种操作电脑的方法:图形界面靠点击,命令行靠输入准确的动作。
第一课:终端、Shell、CLI 不是同一个东西
先想象你打电话去一家大公司:
- 终端 Terminal 是你看到的电话机和通话界面。
- Shell 是接线员,负责听懂你输入的句子、找到程序并安排执行。
- CLI 工具 是不同部门,例如 Git 部门、npm 部门、Cloudflare 部门。
- 命令 Command 是你这次对部门说的具体要求。
text
你
↓ 输入文字
终端窗口
↓ 交给 Shell(例如 zsh)
Shell 找到 CLI 工具(例如 git)
↓
工具执行动作并打印结果所以:你在“终端”里输入 git status,Shell 找到 Git 这个 CLI 工具,Git 再执行“查看状态”。
为什么开发者喜欢 CLI
假设要给 100 张图片改名:鼠标可能要点几百次,命令可以准确描述一次批量操作。它还容易保存、复制和自动化,因此 Git、npm、Wrangler、Claude Code、Codex 等工具都会提供 CLI。
第二课:先认识命令提示符
打开终端后,常会看到类似:
text
zhanghanyue@Mac vibecoderstudy %它不是报错,也不是要你完整复制的命令。可以大概读成:
zhanghanyue@Mac:现在是谁、在哪台电脑上。vibecoderstudy:目前所在的文件夹。%:Shell 在说“我准备好了,请输入下一条命令”。
教程里常写 $ npm run dev。开头的 $ 通常只是“这里是一条终端命令”的提示,不要把 $ 一起输入。
第三课:把一条命令拆开读
bash
npm run build不要把它看成一整串咒语,从左往右拆:
text
npm run build
① ② ③
① 找 npm 这个工具
② 让 npm 执行一个 script
③ script 的名字叫 build再看一条:
bash
git commit -m "补充 AI 课程"text
git 找 Git 工具
commit 创建一次版本记录
-m 后面要提供这次记录的说明
"..." 具体说明;引号把带空格的文字包成一个整体命令通常由四种零件组成:
| 零件 | 作用 | 例子 |
|---|---|---|
| 程序名 | 找谁办事 | git、npm、python |
| 子命令 | 要它做什么 | status、run、install |
| 选项 | 调整做事方式 | --help、-m、--version |
| 参数 | 这次处理谁或什么 | 文件名、分支名、项目名 |
第四课:目录就是你现在站的位置
很多命令报错,不是命令本身错,而是你站错了文件夹。
把电脑想成一栋楼:文件夹是房间,终端里的命令只会先看你当前房间里的东西。
bash
pwdpwd 会告诉你“我现在站在哪里”。
bash
lsls 会列出当前房间里的文件。
bash
cd vibe-coder-handbookcd 是换房间。后面写你要进入的文件夹。
bash
cd .... 表示上一级,所以这句是“回到外面一层”。
第五课:你日常会遇到的 CLI
只查看,不修改
| 命令 | 人话 | 风险 |
|---|---|---|
pwd | 我在哪个文件夹 | 只读 |
ls | 这里有什么 | 只读 |
git status | 哪些文件变了 | 只读 |
git diff | 具体改了哪几行 | 只读 |
node --version | Node 是什么版本 | 只读 |
会改变项目
| 命令 | 人话 | 会改变什么 |
|---|---|---|
npm install | 按说明书安装依赖 | node_modules、锁文件 |
git add 文件名 | 把改动放进待保存区 | Git 暂存区 |
git commit -m "说明" | 创建一个版本存档 | 本地 Git 历史 |
git push | 把本地存档上传 | 远程仓库 |
wrangler pages deploy ... | 把构建产物发布 | 线上站点 |
npm、npx、pnpm、pip 别混在一起
npm:安装和管理 JavaScript 包,也运行package.json里的脚本。npx:找到并临时运行一个 npm 包提供的命令。pnpm:另一个 JavaScript 包管理器,目标类似,但安装方式不同。pip:Python 世界常用的包安装工具,不负责 JavaScript 包。
项目已经使用哪一个包管理器,就优先继续用哪一个,不要随手混用。
第六课:第一次安全实操
这一组命令只读取信息,不会改文件。
- 打开 Mac 的“终端”应用,或 VS Code 菜单里的 Terminal。
- 输入
pwd,按回车。你会看到一条文件夹路径。 - 输入
ls,按回车。你会看到这个文件夹里的内容。 - 如果你已经在项目文件夹,输入
git status。 - 找到最后一行新的提示符。它表示上一条命令已经结束,可以继续输入。
真实输出怎么读
text
On branch main
nothing to commit, working tree clean人话:你现在在 main 分支;没有还没保存进 Git 的改动。
text
modified: docs/index.md人话:docs/index.md 被改过,但还没有形成新的 commit。这不是报错,只是状态报告。
第七课:报错不要从最后一百行开始看
command not found
text
zsh: command not found: wrangler人话:Shell 找不到名为 wrangler 的工具。可能没有安装,也可能它不在 Shell 能找到的位置。
No such file or directory
人话:你给的路径不存在。先运行 pwd 和 ls,确认是否站错目录、文件名是否拼错。
permission denied
人话:找到了目标,但当前身份没有执行或访问权限。不要一看到它就随便加 sudo;先弄清楚到底要访问什么。
构建失败
如果屏幕出现很多红字:
- 往上找到第一条真正的
Error。 - 找文件名和行号,例如
config.ts:42。 - 先读错误附近 5–10 行,不要被后面的连锁错误吓到。
- 把“命令、第一条错误、文件和行号、你刚做了什么”一起交给 AI。
第八课:哪些命令必须先停一下
看到下面这些含义时,不要盲目复制:
- 递归删除整个目录;
- 覆盖或格式化磁盘;
- 带
sudo的陌生命令; - 从陌生网址下载内容后立刻交给 Shell 执行;
- 输出
.env、Token、Cookie 或 SSH 私钥; - 直接部署、发消息、改数据库等会影响外部系统的命令。
安全提问方式:“请先逐段解释这条命令会读取什么、修改什么、上传什么,不要执行。”
学完测试
在 npm run build 里,build 是一个独立安装的软件吗?
答案:通常不是。npm 是工具,run 是动作,build 是当前项目 package.json 里定义的一段脚本名字。
终端提示 No such file or directory 时,第一步可以做什么?
答案:先用 pwd 确认当前目录,再用 ls 看目标是否真的在这里;很多时候只是站错文件夹或路径拼错。