# Vibe Coder 需要懂的一点命令行小知识

> 龙虾AGI通用实验室 · 2026-08-19

## 01 你其实一直在"盯梢"

Vibe Coding 有一个不太被提起，但极其重要的环节：盯过程。

你写好需求丢给 AI，AI 开始干活。这时候你在干嘛？你不是扔完就走了，你会盯着看。它在装一个库，你知道。它在创建文件，你知道。它报错了，改了一版又跑了一遍，你也知道。就算你没有全程盯着，等它跑完了，你也会回头翻一遍过程，大致看看它做了什么、走了哪些步骤。

你不需要逐行看懂它写的代码，但你大体知道发生了什么。

这就是掌控感。你不用亲自开车，但你坐在副驾驶上，看得见方向盘往哪打、前面是不是走错路了。

而你用来"盯"的那个地方，就是终端。你在终端里跟 AI 交互，看它跑命令、出结果、报错、重试。你经常见到的一个词，就是 bash。

但 bash 到底是什么？PowerShell、CMD、终端这些东西又是什么？它们看起来都是黑底白字的窗口，到底有什么区别？

## 02 PowerShell、CMD、终端，看起来都一样？

你在 Windows 上可能见过 CMD（命令提示符），也见过 PowerShell，也见过"终端"（Windows Terminal）。Mac 上也有一个叫"终端"的东西。它们打开都是一个黑窗口，里面有个光标在闪，等你输入东西。

看起来差不多，但它们其实分属两层。

第一层是窗口。就是你看到的那个黑框框，它只负责显示你的输入和输出，本身不理解任何命令。这一层叫"终端"。Windows 上叫 Windows Terminal，Mac 上叫 Terminal。

第二层是大脑。窗口里面跑着一个程序，这个程序才是真正听懂你的命令、去执行操作的。这一层叫"Shell"。Bash、CMD、PowerShell 都是 Shell，都是大脑，只是语法各不相同。

所以终端和 Shell 的关系是：终端是窗口，Shell 是跑在窗口里的大脑。一个终端窗口里可以跑不同的 Shell。Windows Terminal 里你可以开一个标签页跑 PowerShell，再开一个标签页跑 CMD，甚至还能跑 Bash。

那你可能会问：我以前打开 CMD 或 PowerShell 的时候，不是直接就弹出一个黑窗口吗？并没有先打开什么终端啊？

这是因为你直接启动 CMD 或 PowerShell 的时候，Windows 会自动给它们套一个窗口。看起来像是窗口和大脑合在一起了，但其实还是两层，只是 Windows 帮你省了一步。

搞清楚这个，后面的东西就好理解了。PowerShell、CMD、终端的区别，本质上不是窗口长什么样，而是里面跑的 Shell 不一样。而 Shell 不一样，命令语法就完全不同。

## 03 三种主流 Shell，以及为什么命令不通用

上面说了，Shell 就是那个"大脑"。你最可能碰到的 Shell 有三种。

Bash，Linux 和 macOS 世界的主流 Shell。开源、历史悠久、生态庞大，全球绝大多数服务器都在用。

CMD（命令提示符），Windows 上最老的 Shell，从 DOS 时代传下来的，功能非常基础。

PowerShell，微软后来做的新一代 Shell，比 CMD 强大得多，也复杂得多。

它们之间有一个让很多人困惑的事：同样一件事，三种 Shell 的命令写法完全不同。

操作	Bash（Linux/Mac）	CMD（Windows）	PowerShell（Windows）

列出文件	ls	dir	Get-ChildItem

复制文件	cp	copy	Copy-Item

删除文件	rm	del	Remove-Item

查看文件内容	cat	type	Get-Content

清屏	clear	cls	Clear-Host

为什么不通用？因为它们就是三套完全独立的程序，各自定义了各自的命令语法。就像中文说"谢谢"、英语说"Thank you"、日语说"ありがとう"，意思一样，但属于不同的语言系统。你在 Bash 里输入 dir，Bash 不认识。你在 CMD 里输入 ls，CMD 也不认识。

看到这你可能会想：CMD 和 PowerShell 都是微软做的，怎么也不通用？它俩到底什么关系？

## 04 CMD 和 PowerShell：同一家公司的两个产品

很多人以为 PowerShell 是 CMD 的升级版，是 CMD 2.0。

不是。它们没有继承关系。

CMD 从 DOS 时代一路延续下来，微软一直在维护它，但从来没对它做过大的改造。后来微软觉得 CMD 实在太有局限性了，但又不能直接废掉，因为大量老程序和老脚本还依赖它。于是微软选择从零开始，另外做了一个全新的 Shell，就是 PowerShell。

所以现状是：CMD 和 PowerShell 同时装在 Windows 里，你都能用。CMD 基本进入了只维护不发展的养老状态，微软在力推 PowerShell。

两者之间的兼容性分三种情况。

有些命令通用。比如 cd、mkdir、echo，两边都能跑。

有些命令同名但行为不同。比如 where，在 CMD 里是查找程序安装位置，在 PowerShell 里是 Where-Object 的别名，用来筛选数据，完全两码事。

有些语法完全互斥。CMD 的 for /f 写法在 PowerShell 里直接报错，PowerShell 的对象操作 CMD 也做不了。

另外 PowerShell 还设了一些别名来照顾老用户。比如你在 PowerShell 里输入 ls，它也能用，会自动映射到 Get-ChildItem。但这只是表面兼容，底层逻辑完全不同。

说到底层，两者最根本的设计差异在于数据传递方式。Bash 和 CMD 传递的是纯文本，命令的输入输出就是字符串。而 PowerShell 传递的是结构化的对象，每个对象自带属性（文件名、大小、修改时间等），你可以像操作数据库一样精确筛选。简单说，CMD 给你一张手写清单，PowerShell 给你一个 Excel 表格。

到这里，三种 Shell 是什么、有什么区别、CMD 和 PowerShell 什么关系，都清楚了。接下来回到我们最常见的 Bash，来看一个更有意思的问题：你在终端里输入一条命令，背后到底发生了什么？

## 05 Bash 的角色：它不干活，它派活

你在终端输入 ls，按回车，屏幕上列出了一堆文件。看起来好像是 Bash 去读了文件夹里的内容。

其实不是。

ls 本身是一个独立的小程序，住在系统的 /bin/ls 这个位置。Bash 做的事情是：听到你说了 ls，跑去系统里把这个小程序找出来，启动它，然后把它的输出显示在屏幕上。

cp 是另一个独立的小程序。rm 也是。pip 也是。python 也是。它们都不是 Bash 的一部分，只是被 Bash 调用的工具。

Bash 自己不会复制文件，不会删除文件，不会安装 Python 包。它的角色是调度员：你说要干什么，它去叫对应的程序来干。就像你去餐厅，跟服务员说"来一份宫保鸡丁"，服务员自己不炒菜，而是把订单传给后厨。Bash 就是这个服务员。

所以当你在终端输入 pip install pandas，Bash 做的事情是：识别出你要运行 pip，参数是 install pandas，然后启动 pip。接下来连网络、下载包、安装到正确位置，全是 pip 自己的活。

Bash 只管派活，不管干活。它的价值在于给你一个统一的入口，让你用简单的文字命令去调用系统上的任何程序。Shell 这个英文单词本身就是"壳"的意思，它在操作系统外面包了一层壳，让你用文字就能指挥整台机器。

理解了这一层，还有一个问题你可能一直想问：Bash 是 Linux 的东西，但你的电脑是 Windows，为什么你在终端里看到的还是 Bash？

## 06 在云端跑，用 Bash。在你电脑上跑，用 PowerShell

这个问题的答案取决于代码跑在哪里。

如果代码跑在云端的 Linux 服务器上，用的就是 Bash。你的 Windows 电脑全程没参与执行，只是一块看结果的屏幕。

如果代码跑在你自己的 Windows 电脑上，用的就是 PowerShell 或者 CMD。

跟你用什么工具无关，只看代码实际跑在哪台机器上。那台机器是 Linux 就用 Bash，是 Windows 就用 PowerShell。

补一个小知识：Windows 上其实也能用 Bash。微软做了一个叫 WSL（Windows Subsystem for Linux）的东西，在 Windows 里嵌了一个 Linux 子系统，装上就能跑 Bash。很多开发者装的 Git Bash 也是类似的东西。

说到这，关于 Shell 的核心概念基本讲完了。下面再补两个你大概率会碰到的小知识点。

## 07 .sh、.bat、.ps1 分别是什么

这三个后缀你可能见过但没在意。

把一堆命令按顺序写在一个文件里，保存下来，就变成了一个脚本。运行这个文件，里面的命令会自动按顺序执行。

不同的 Shell 有不同的脚本格式：.sh 给 Bash 用，在 Linux/macOS 上跑。.bat 给 CMD 用，在 Windows 上跑。.ps1 给 PowerShell 用，也在 Windows 上跑，可以理解为 .bat 的升级版。

三者语法不同，运行环境不同，不能互相直接执行。

## 08 管道：Bash 的一个杀手级能力

最后说一个 Bash 的特性，帮你理解为什么 AI 特别爱用它。

Bash 有一个叫"管道"的机制，用竖线 | 表示。它能把一个命令的输出直接接到下一个命令的输入上。

比如：cat log.txt | grep "error" | wc -l

拆开看：cat log.txt 读出日志文件的内容，通过管道传给 grep "error"，筛出含 error 的行，再通过管道传给 wc -l，统计一共多少行。

一行命令，三步操作，一气呵成。就像一条流水线，每个工人只做一步，串起来就能完成复杂的任务。AI 不需要写一个大程序，把几个小命令用管道一串就够了。

## 09 写在最后

回到开头。

Vibe Coding 的掌控感来自"盯过程"。而盯过程的前提是，你至少得知道自己在看什么。

以前你看 AI 跑命令，看到的可能就是一堆字符在滚动。现在你知道了：那个黑窗口是终端，里面跑的是 Bash（或者 PowerShell），Bash 不是自己在干活，而是在一个一个地调用工具。你也知道了为什么有时候看到 ls 有时候看到 dir，知道了 .sh 和 .bat 是怎么回事。

这些东西不需要你记住，也不需要你会用。但当你知道这些的时候，你盯着 AI 干活的感觉会不一样。你能看出来它在装环境、建文件、跑测试、排错误。你知道它在做什么，你就能判断它做得对不对。

副驾驶上的你，现在看得懂仪表盘了。

![](images/1fa0b3/img_001.png)

我建了一个AI学习研究群，目前几十来人，都是在真正动手搞AI的人。

如果你也在自己**跑模型、写代码、做项目**，

或者使用**Claude**和**Claude code**，

欢迎**点赞关注转发**一键三连，然后加我微信，备注写清"你在做的AI方向"，聊得来的话我拉你进群。纯围观的和小白就不加了，有一定门槛。当然你也可以简单粗暴的甩给我999元，我拉你进群，这个没门槛。

![](images/1fa0b3/img_002.jpg)
