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 的命令写法完全不同。
为什么不通用?因为它们就是三套完全独立的程序,各自定义了各自的命令语法。就像中文说"谢谢"、英语说"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 干活的感觉会不一样。你能看出来它在装环境、建文件、跑测试、排错误。你知道它在做什么,你就能判断它做得对不对。
副驾驶上的你,现在看得懂仪表盘了。

如果你也在自己跑模型、写代码、做项目,
或者使用Claude和Claude code,
欢迎点赞关注转发一键三连,然后加我微信,备注写清"你在做的AI方向",聊得来的话我拉你进群。纯围观的和小白就不加了,有一定门槛。当然你也可以简单粗暴的甩给我999元,我拉你进群,这个没门槛。
