什么是 CLI?一篇讲清命令行界面的入门文章
什么是 CLI?一篇讲清命令行界面的入门文章
适合人群:刚接触编程、想学开发工具、经常听到“命令行”“终端”“Shell”但还没真正理解的人
一、CLI 到底是什么
CLI 是Command Line Interface的缩写,中文一般叫:
命令行界面
命令行交互界面
它和我们平时常见的图形界面不一样。
图形界面是:
看到按钮
点击菜单
拖动窗口
用鼠标完成操作
而 CLI 的核心方式是:
你输入一条命令
系统接收命令
执行后返回结果
比如下面这条命令:
pwd
它的作用是:
输出你当前所在的目录路径
再比如:
ls
它的作用是:
查看当前目录里的文件和文件夹
这就是 CLI 最典型的使用方式。
简单理解:
GUI 是“点给你看”,CLI 是“输给系统做”。
二、为什么很多程序员都在用 CLI
很多刚接触开发的人会觉得:
既然图形界面更直观,为什么程序员还总在终端里敲命令?
答案很简单,因为 CLI 在很多场景下更高效、更精确、更适合自动化。
CLI 的优势主要有这几个。
1. 操作速度快
熟悉命令以后,很多事情比鼠标点来点去更快。
比如:
新建项目
安装依赖
切换目录
查日志
批量处理文件
启动本地服务
这些操作用命令往往只需要一两行。
2. 可重复
图形界面的操作,很多时候你做完就做完了,不方便完整复现。 CLI 不一样,一条命令本身就是可复制、可复用、可记录的。
例如:
npm install
你自己能执行,队友也能执行,CI 服务器也能执行。
3. 适合自动化
这点非常重要。
CLI 不是只能“手动输入”,它还可以:
写进脚本
写进构建流程
写进 CI/CD
写进自动化任务
也就是说,一条命令不仅能给人用,也能给机器用。
4. 更接近开发工具的原生能力
很多开发工具最早就是围绕命令行设计的,比如:
gitnpmpnpmpythonnodedockerkubectlflutteradb
图形界面很多时候只是对这些命令做了一层封装。
三、CLI、终端、Shell、控制台,到底有什么区别
很多人会把这几个词混着用,但它们并不完全一样。
3.1 CLI 是“交互方式”
CLI 指的是一种交互模式:
通过命令文本和系统交互
它描述的是“方式”,不是某一个具体的软件。
3.2 Terminal 是“承载界面”
Terminal,也就是终端,是你输入命令的窗口。
例如:
macOS 的
TerminalmacOS 的
iTerm2Windows 的
Windows TerminalLinux 的各种终端程序
你可以把它理解成:
CLI 的“窗口”
3.3 Shell 是“命令解释器”
Shell 是负责理解并执行命令的程序。
常见的 Shell 有:
bashzshfishPowerShell
比如你在终端里输入:
cd Desktop
真正理解这条命令并执行它的,通常是 Shell。
3.4 一个最容易理解的关系
你可以这样记:
CLI:交互方式Terminal:输入命令的窗口Shell:解释并执行命令的程序
四、CLI 和图形界面有什么区别
很多文章会简单说“CLI 是黑窗口,GUI 是图形界面”,但这个说法太浅了。
真正的区别在于:
4.1 GUI 偏可视化
特点:
上手容易
更适合普通用户
适合低频操作
不要求记命令
缺点:
批量操作效率不高
难以自动化
同样的操作不容易精确记录
4.2 CLI 偏表达式和流程化
特点:
表达能力强
可组合
可重复
可自动化
适合开发和运维场景
缺点:
上手门槛更高
需要记忆命令
初学者容易输错
所以本质上不是“谁替代谁”,而是:
GUI 更适合通用、直观、低门槛的任务
CLI 更适合精确、高频、可复用、自动化的任务
五、CLI 在日常开发中能做什么
如果你刚接触开发,可以先看看 CLI 在真实工作里都用来做什么。
1. 切换目录、查看文件
pwd ls cd project-name
2. 创建文件、复制文件、删除文件
mkdir demo cp a.txt b.txt rm test.txt
3. 安装依赖和运行项目
npm install npm run dev
4. 使用版本控制
git status git add . git commit -m "fix login bug"
5. 运行脚本或程序
python app.py node server.js
6. 查日志、查端口、查进程
tail -f app.log lsof -i :3000 ps aux
7. 调用开发工具
例如:
flutter run docker compose up codex
这也是为什么很多开发工具都会优先提供 CLI。
六、CLI 并不等于“只会几个命令”
这是一个很常见的误区。
很多人以为命令行只是:
cdlsmkdir
其实真正强大的地方在于“组合”。
比如你可以把多个操作串起来形成一个流程:
git pull npm install npm run build
甚至把这些命令写成脚本,变成一键执行。
例如一个部署脚本,可能就包含:
拉取代码
安装依赖
编译项目
上传产物
重启服务
所以从本质上说,CLI 不只是一个“操作入口”,更是一种“流程表达方式”。
七、为什么说会 CLI,学习新工具会更快
因为很多现代开发工具的核心入口都是命令。
比如你看到这些时:
npm installgit clonepip installdocker runcodex
它们本质上都属于 CLI 操作。
一旦你理解了 CLI 的通用规律,学新工具时会更轻松,因为你只是在学习:
新命令叫什么
参数怎么传
输出怎么看
底层交互逻辑其实差不多。
八、一条 CLI 命令通常长什么样
一般来说,一条命令由这几部分组成:
command subcommand --option value
例如:
git commit -m "init project"
这里可以拆成:
git:主命令commit:子命令-m:选项"init project":选项值
再比如:
npm run dev
可以理解成:
npm:工具run:操作类型dev:目标脚本名
学 CLI 时,理解这种结构很重要。
九、初学者最该掌握的 10 个基础命令
如果你是入门阶段,建议先掌握下面这些。
1.pwd
查看当前路径。
2.ls
查看目录内容。
3.cd
切换目录。
4.mkdir
创建文件夹。
5.touch
创建空文件。
6.cp
复制文件。
7.mv
移动或重命名文件。
8.rm
删除文件。
9.cat
查看文件内容。
10.clear
清空终端内容。
这些命令不难,但足够让你真正开始在命令行里工作。
十、学 CLI 最容易遇到的几个问题
10.1 为什么我输入命令后提示command not found
通常有几种原因:
命令没有安装
环境变量没配置好
命令名字写错了
当前 Shell 环境没加载正确
10.2 为什么我切目录总报错
一般是路径不对。
比如目录不存在,或者你写的是相对路径,但当前所在目录并不是你以为的位置。
这时先用:
pwd
确认自己当前在哪,再决定怎么cd。
10.3 为什么有些命令在 Mac 能用,在 Windows 不一样
因为不同操作系统的默认 Shell 和命令体系不完全一样。
例如:
macOS / Linux 常见
bash、zshWindows 常见
PowerShell、cmd
有些命令在 Unix 系环境里通用,但在 Windows 原生命令行里要换写法。
不过随着PowerShell、Windows Terminal、WSL 的普及,这种差异比以前已经小了很多。
十一、CLI 适合哪些人学
几乎只要你跟技术工作沾边,都建议学一点 CLI。
尤其是:
前端开发
后端开发
测试工程师
运维工程师
数据工程师
AI 工程师
独立开发者
即使你不是程序员,只要你经常需要:
批量处理文件
跑脚本
管理项目
使用开发工具
学 CLI 都会很有价值。
十二、CLI 难吗?值不值得学
结论很明确:
入门不难
很值得学
它难的不是“概念”,而是“熟练度”。
CLI 的学习过程更像这样:
先理解它是什么
学会几个最常用命令
在真实项目里反复使用
慢慢开始理解参数、脚本、自动化
也就是说,CLI 不是靠“背完一本命令大全”学会的,而是靠“边用边熟”。
十三、如果你是新手,建议这样开始学 CLI
这是一个比较稳的学习路径。
第一步:先学文件和目录操作
掌握:
pwdlscdmkdirtouch
第二步:学会运行一个开发工具
比如:
git --version node -v npm -v
感受一下“命令行就是工具入口”。
第三步:试着运行一个真实项目
例如:
npm install npm run dev
第四步:开始读命令帮助
大多数 CLI 工具都支持:
command --help
例如:
git --help codex --help
这一步很关键,因为它意味着你开始能自己探索工具了。
十四、一个非常现实的结论
如果你以后要做开发,CLI 基本是绕不过去的。
因为你迟早会遇到这些事情:
从 Git 拉代码
安装依赖
启动本地项目
跑测试
打包构建
查报错日志
执行自动化命令
而这些事情里,大量操作本身就是 CLI。
所以学习 CLI,不只是“多学一个工具”,而是在掌握现代开发工作流的基础能力。
十五、总结
最后用几句话总结 CLI:
CLI 是
Command Line Interface,中文叫命令行界面。它通过输入文本命令来操作系统和工具。
它和 GUI 最大的区别,不只是“有没有按钮”,而是是否适合精确表达、批量处理和自动化。
开发中大量核心工具都优先支持 CLI。
CLI 不要求你一开始就很强,先学最常用的命令,再在真实项目里多用,成长会很快。
如果你刚开始接触开发,我非常建议你尽早把 CLI 用起来。 它可能一开始不如按钮直观,但一旦熟悉,你会明显感受到效率上的差距。
延伸阅读建议
如果你准备继续往下学,可以接着了解这些主题:
什么是 Terminal
什么是 Shell
什么是 Bash 和 Zsh
什么是 PowerShell
Git 基础命令
npm / pnpm 常用命令
什么是 Codex CLI
