CLI、Shell、Terminal
一. 什么是 CLI
0. 什么是 GUI
GUI 是 Graphical User Interface(图形用户界面)的缩写,是一种允许用户通过鼠标点击、拖拽、菜单选择等图形化方式与计算机程序交互的界面方式。与 CLI 不同,GUI 提供按钮、窗口、图标等可视化元素,用户无需记忆命令,直接“所见即所得”地操作。
GUI 是一种交互模式,即【鼠标点击操作】—> 【图形反馈结果】
CLI 是 Command-Line Interface(命令行界面)的缩写,是一种允许用户通过输入文本命令与计算机程序进行交互的界面方式。与图形用户界面(GUI)不同,CLI 没有按钮、窗口或鼠标操作,用户需要记住并输入特定的命令来执行操作。
CLI是一种交互模式,即【输入文本命令】—> 【文本返回结果】
1. CLI 的核心特点
- 文本驱动:所有操作都通过键入命令完成,输入后按回车执行。
- 高效快捷:熟练用户可以通过组合命令和参数快速完成复杂任务,无需在菜单中层层点击。
- 可脚本化:CLI 命令可以写入脚本文件批量执行,实现自动化操作。
- 资源占用低:相比 GUI,CLI 程序通常占用更少的内存和 CPU 资源。
- 远程操作友好:通过 SSH 等协议,CLI 可以方便地操作远程服务器。
2. 常见的 CLI 示例
| 类别 | 示例 | 说明 |
|---|---|---|
| 操作系统 | ls、cd、mkdir | Linux/macOS 下的文件与目录操作 |
| 版本控制 | git commit、git push | Git 命令行工具 |
| 包管理 | npm install、pip install | 安装和管理软件依赖 |
| 容器 | docker run、docker ps | Docker 容器管理 |
| 数据库 | mysql -u root -p | 连接 MySQL 数据库 |
3. CLI 与 GUI 的对比
| 维度 | CLI | GUI |
|---|---|---|
| 操作方式 | 键入命令 | 鼠标点击 |
| 学习曲线 | 较陡峭 | 较平缓 |
| 执行速度 | 快 | 相对较慢 |
| 自动化能力 | 强 | 弱 |
| 适用场景 | 开发、运维、服务器管理 | 日常办公、设计、浏览 |
4. 总结
CLI 是程序员和运维人员日常工作中不可或缺的工具。虽然它看起来不如 GUI 直观,但一旦掌握常用命令,就能大幅提升工作效率,尤其是在服务器管理和自动化脚本场景中,CLI 几乎是唯一的选择。
二. 什么是 Shell
Shell(壳)是操作系统提供给用户与内核交互的命令行解释器。它接收用户输入的命令,解析后交给操作系统内核执行,再把结果返回给用户。简单来说,Shell 就是 CLI 背后的「翻译官」——你敲入 ls,Shell 把它翻译成内核能理解的操作,然后显示文件列表。
Shell 的工作流程:
用户输入命令 --> Shell 解析 --> 内核执行 --> 返回结果
1. Shell 与 CLI 的关系
CLI 是一种交互方式(输入文本命令、返回文本结果),而 Shell 是实现这种交互的程序。二者常被混用,但侧重点不同:
| 维度 | CLI | Shell |
|---|---|---|
| 本质 | 交互模式/界面 | 具体的解释器程序 |
| 举例 | 命令行操作方式 | Bash、Zsh、PowerShell |
| 关注点 | 怎么交互 | 谁来解析并执行命令 |
2. 常见的 Shell
| Shell | 平台 | 特点 |
|---|---|---|
| Bash | Linux/macOS | 最流行,默认 Shell |
| Zsh | macOS/Linux | 兼容 Bash,补全更强 |
| PowerShell | Windows | 面向对象,适合系统管理 |
| CMD | Windows | 传统命令行,功能较基础 |
3.shell解析后,谁来执行
Shell 解析命令后,交给谁来执行?——答案是操作系统内核(Kernel)。
Shell 本身并不直接执行命令,它只负责解析:把用户输入的文本命令拆解成内核能理解的形式,然后通过系统调用(如 execve)把任务交给操作系统内核。内核是操作系统的核心,负责管理 CPU、内存、文件系统等底层资源,真正完成 ls、cd 等操作的就是内核。
Shell 解析成功后,命令分为两种情况:内置命令与外部命令。
- 内置命令(Built-in):由 Shell 自身直接执行,不启动新进程。例如
cd、echo、export、alias等。Shell 解析到这类命令后,直接在自己的进程内调用对应功能完成操作,速度最快。 - 外部命令(External):存放在文件系统中的独立可执行程序,例如
ls、cp、grep、git。Shell 解析到这类命令后,会通过PATH环境变量在磁盘上查找对应的可执行文件,然后创建子进程(fork)并调用execve加载该程序执行,执行完再把结果返回给 Shell。
| 类型 | 执行方式 | 是否启动新进程 | 示例 |
|---|---|---|---|
| 内置命令 | Shell 自身直接执行 | 否 | cd、echo、export |
| 外部命令 | 查找可执行文件并创建子进程执行 | 是 | ls、grep、git |
3. 总结
Shell 是命令行世界的核心引擎,它把用户的文本命令翻译成系统操作。理解了 Shell,你就真正理解了 CLI 背后「谁在执行命令」的问题,也为后续学习脚本编程打下基础。
三. 什么是 Terminal
Terminal(终端)是用户与 Shell 进行交互的窗口程序。它提供一个文本界面,让你输入命令并查看输出结果。如果说 Shell 是「翻译官」,那么 Terminal 就是「对话窗口」——你在这个窗口里敲字,Shell 在背后解析执行,结果再显示回这个窗口。
Terminal 的工作流程:
用户在 Terminal 输入命令 --> 交给 Shell 解析 --> 内核执行 --> 结果显示回 Terminal
1. Terminal 与 Shell 的区别
很多人把 Terminal 和 Shell 混为一谈,其实它们是两个不同层次的东西:
| 维度 | Terminal | Shell |
|---|---|---|
| 本质 | 图形窗口程序 | 命令行解释器 |
| 作用 | 提供输入/输出界面 | 解析并执行命令 |
| 举例 | Windows Terminal、iTerm2、GNOME Terminal | Bash、Zsh、PowerShell |
| 类比 | 对话窗口 | 窗口背后的翻译官 |
2. 常见的 Terminal
| Terminal | 平台 | 特点 |
|---|---|---|
| Windows Terminal | Windows | 微软官方,支持多标签页 |
| iTerm2 | macOS | 功能强大,补全和分屏出色 |
| GNOME Terminal | Linux | GNOME 桌面默认终端 |
| Konsole | Linux | KDE 桌面默认终端 |
| CMD | Windows | 传统命令行窗口,功能较基础 |
3. Terminal 与 CMD 的关系
很多人会把 Terminal 和 CMD 混为一谈,其实它们是不同层次的东西:
- CMD(命令提示符):是 Windows 系统自带的一个命令行解释器(Shell),它负责解析并执行你输入的命令,例如
dir、copy、ipconfig。 - Terminal(终端):是一个窗口程序,负责提供输入/输出界面。它本身不解析命令,只是把命令交给背后的 Shell 去执行。
简单来说:CMD 是 Shell,Terminal 是窗口。你在 Windows Terminal 这个窗口里,既可以运行 CMD,也可以运行 PowerShell、WSL 等不同的 Shell。
| 维度 | Terminal | CMD |
|---|---|---|
| 本质 | 图形窗口程序 | 命令行解释器(Shell) |
| 作用 | 提供输入/输出界面 | 解析并执行命令 |
| 举例 | Windows Terminal、iTerm2 | CMD、PowerShell、Bash |
| 类比 | 对话窗口 | 窗口背后的翻译官 |
4. 总结
Terminal、Shell、CLI 三者层层递进:CLI 是交互方式,Shell 是解释器,Terminal 是承载这一切的窗口。打开 Terminal,输入命令,背后就是 Shell 在为你工作——这就是命令行世界的完整链路。
5. 如何打开 Terminal
不同操作系统打开 Terminal 的方式略有不同,下面列出最常用的几种:
| 平台 | 打开方式 | 说明 |
|---|---|---|
| Windows | Win + R 输入 cmd 回车,或搜索「终端 / Terminal」 | 打开 CMD 或 Windows Terminal |
| macOS | Command + 空格 搜索「终端 / Terminal」 | 打开系统自带的 Terminal.app |
| Linux | Ctrl + Alt + T | 打开默认终端(如 GNOME Terminal) |
提示:在 Windows 上,推荐优先使用 Windows Terminal,它支持多标签页,可以同时运行 CMD、PowerShell 和 WSL。
补充: 什么是 WSL
WSL(Windows Subsystem for Linux,适用于 Linux 的 Windows 子系统) 是微软提供的一项功能,它允许你在 Windows 系统上直接运行 Linux 环境,而无需安装虚拟机或双系统。
简单来说,WSL 让你在 Windows 上拥有一个真正的 Linux 内核,可以运行 Bash、Zsh 等 Linux Shell,以及 apt、gcc、docker 等 Linux 工具链。
| 维度 | 说明 |
|---|---|
| 全称 | Windows Subsystem for Linux |
| 作用 | 在 Windows 上运行 Linux 环境 |
| 常见版本 | WSL 1、WSL 2(推荐,基于轻量虚拟机) |
| 典型用途 | 开发、脚本、运行 Linux 命令和工具 |
提示:在 Windows Terminal 中,你可以直接打开 WSL 标签页,进入 Linux 环境使用 Bash,无需切换系统。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)