Skip to content

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
pwd

pwd 会告诉你“我现在站在哪里”。

bash
ls

ls 会列出当前房间里的文件。

bash
cd vibe-coder-handbook

cd 是换房间。后面写你要进入的文件夹。

bash
cd ..

.. 表示上一级,所以这句是“回到外面一层”。

第五课:你日常会遇到的 CLI ​

只查看,不修改 ​

命令人话风险
pwd我在哪个文件夹只读
ls这里有什么只读
git status哪些文件变了只读
git diff具体改了哪几行只读
node --versionNode 是什么版本只读

会改变项目 ​

命令人话会改变什么
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 包。

项目已经使用哪一个包管理器,就优先继续用哪一个,不要随手混用。

第六课:第一次安全实操 ​

这一组命令只读取信息,不会改文件。

  1. 打开 Mac 的“终端”应用,或 VS Code 菜单里的 Terminal。
  2. 输入 pwd,按回车。你会看到一条文件夹路径。
  3. 输入 ls,按回车。你会看到这个文件夹里的内容。
  4. 如果你已经在项目文件夹,输入 git status。
  5. 找到最后一行新的提示符。它表示上一条命令已经结束,可以继续输入。

真实输出怎么读 ​

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;先弄清楚到底要访问什么。

构建失败 ​

如果屏幕出现很多红字:

  1. 往上找到第一条真正的 Error。
  2. 找文件名和行号,例如 config.ts:42。
  3. 先读错误附近 5–10 行,不要被后面的连锁错误吓到。
  4. 把“命令、第一条错误、文件和行号、你刚做了什么”一起交给 AI。

第八课:哪些命令必须先停一下 ​

看到下面这些含义时,不要盲目复制:

  • 递归删除整个目录;
  • 覆盖或格式化磁盘;
  • 带 sudo 的陌生命令;
  • 从陌生网址下载内容后立刻交给 Shell 执行;
  • 输出 .env、Token、Cookie 或 SSH 私钥;
  • 直接部署、发消息、改数据库等会影响外部系统的命令。

安全提问方式:“请先逐段解释这条命令会读取什么、修改什么、上传什么,不要执行。”

学完测试 ​

在 npm run build 里,build 是一个独立安装的软件吗?

答案:通常不是。npm 是工具,run 是动作,build 是当前项目 package.json 里定义的一段脚本名字。

终端提示 No such file or directory 时,第一步可以做什么?

答案:先用 pwd 确认当前目录,再用 ls 看目标是否真的在这里;很多时候只是站错文件夹或路径拼错。

写给想驾驭 AI,而不只是依赖 AI 的 Vibe Coder。