Linux 命令行简介 #
什么是命令行? #
命令行界面(Command Line Interface,CLI)是一种通过文本命令与计算机交互的方式。用户输入命令,系统执行并返回结果。
text
┌─────────────────────────────────────────────────────────────┐
│ 用户与系统交互方式 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 命令行界面 (CLI) 图形用户界面 (GUI) │
│ ┌───────────────┐ ┌───────────────┐ │
│ │ $ ls -la │ │ 📁 📂 📄 │ │
│ │ $ cd /home │ │ 🖱️ 点击操作 │ │
│ │ $ cat file │ │ 📊 可视化 │ │
│ └───────────────┘ └───────────────┘ │
│ │
│ 文本输入 → 精确控制 鼠标操作 → 直观易用 │
│ │
└─────────────────────────────────────────────────────────────┘
命令行的历史 #
发展历程 #
text
1960年代 ─── 批处理系统
│
│ 穿孔卡片
│ 无交互能力
│
1970年代 ─── Unix Shell 诞生
│
│ Ken Thompson 创建 sh
│ 命令行真正开始
│
1980年代 ─── Bash 出现
│
│ Brian Fox 创建 Bash
│ 成为最流行的 Shell
│
2000年代 ─── 现代终端
│
│ 终端模拟器普及
│ 远程管理成为主流
│
至今 ─── 云计算时代
│
│ 容器化、自动化
│ DevOps 核心技能
重要里程碑 #
| 年份 | 事件 | 意义 |
|---|---|---|
| 1969 | Unix 诞生 | 操作系统的基础 |
| 1971 | Thompson Shell | 第一个 Unix Shell |
| 1979 | Bourne Shell | sh 成为标准 |
| 1989 | Bash 发布 | 最广泛使用的 Shell |
| 2005 | zsh 流行 | 现代化 Shell 体验 |
| 2020 | PowerShell Core | 跨平台命令行 |
为什么学习命令行? #
1. 强大的控制能力 #
bash
# 图形界面:需要多次点击
# 命令行:一条命令完成
# 批量重命名文件
$ for f in *.txt; do mv "$f" "${f%.txt}.bak"; done
# 查找并删除 7 天前的日志
$ find /var/log -name "*.log" -mtime +7 -delete
# 统计代码行数
$ find . -name "*.js" | xargs wc -l | tail -1
2. 自动化能力 #
bash
# 自动备份脚本
#!/bin/bash
backup_dir="/backup/$(date +%Y%m%d)"
mkdir -p "$backup_dir"
cp -r /important/data "$backup_dir/"
echo "Backup completed at $(date)"
3. 远程管理 #
bash
# SSH 远程连接
$ ssh user@remote-server.com
# 远程执行命令
$ ssh user@server 'df -h'
# 远程文件传输
$ scp file.txt user@server:/path/to/dest/
4. 资源效率 #
text
┌─────────────────────────────────────────────────────────────┐
│ 资源占用对比 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 命令行环境 图形界面环境 │
│ ┌───────────────┐ ┌───────────────┐ │
│ │ 内存: ~50MB │ │ 内存: ~500MB │ │
│ │ CPU: 极低 │ │ CPU: 中等 │ │
│ │ 启动: 毫秒级 │ │ 启动: 秒级 │ │
│ └───────────────┘ └───────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
Shell 是什么? #
Shell 是命令行解释器,它接收用户输入的命令,并将其转换为操作系统能理解的指令。
常见 Shell 类型 #
| Shell | 名称 | 特点 |
|---|---|---|
| sh | Bourne Shell | 最原始的 Shell |
| bash | Bourne Again Shell | 最流行,功能丰富 |
| zsh | Z Shell | 现代化,插件丰富 |
| fish | Friendly Shell | 用户友好,自动建议 |
| dash | Debian Almquist | 轻量级,脚本执行快 |
查看当前 Shell #
bash
# 查看当前使用的 Shell
$ echo $SHELL
/bin/bash
# 查看系统支持的 Shell
$ cat /etc/shells
/bin/sh
/bin/bash
/bin/zsh
/usr/bin/fish
# 查看所有 Shell 版本
$ bash --version
GNU bash, version 5.0.17(1)-release
终端与控制台 #
概念区分 #
text
┌─────────────────────────────────────────────────────────────┐
│ 术语区分 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 终端 (Terminal) │
│ ├── 物理终端:早期硬件设备 │
│ └── 终端模拟器:软件模拟(如 GNOME Terminal) │
│ │
│ 控制台 (Console) │
│ └── 系统直接连接的物理设备 │
│ │
│ Shell │
│ └── 命令解释器程序(bash、zsh 等) │
│ │
│ 关系:终端 → Shell → 操作系统 │
│ │
└─────────────────────────────────────────────────────────────┘
常见终端模拟器 #
| 终端 | 平台 | 特点 |
|---|---|---|
| GNOME Terminal | Linux | GNOME 默认终端 |
| Konsole | Linux | KDE 默认终端 |
| iTerm2 | macOS | 功能强大 |
| Terminal.app | macOS | 系统默认 |
| Windows Terminal | Windows | 现代化终端 |
| Alacritty | 跨平台 | GPU 加速 |
命令行的优势 #
1. 精确控制 #
bash
# 精确控制文件权限
$ chmod 755 script.sh
# 精确控制文件所有者
$ chown user:group file.txt
# 精确控制进程
$ kill -HUP 1234
2. 可重复性 #
bash
# 将操作记录为脚本
#!/bin/bash
# setup.sh - 项目初始化脚本
mkdir -p project/{src,tests,docs}
touch project/src/main.py
touch project/tests/test_main.py
echo "# Project" > project/README.md
3. 可组合性 #
bash
# 组合多个命令完成复杂任务
$ cat access.log | grep "ERROR" | awk '{print $1}' | sort | uniq -c | sort -rn | head -10
# 分析:
# cat access.log - 读取日志文件
# grep "ERROR" - 筛选错误行
# awk '{print $1}' - 提取第一列(IP地址)
# sort - 排序
# uniq -c - 统计出现次数
# sort -rn - 按数字倒序排列
# head -10 - 显示前 10 行
4. 脚本自动化 #
bash
# 定时任务自动化
# crontab -e
0 2 * * * /home/user/backup.sh # 每天凌晨 2 点执行备份
*/5 * * * * /home/user/check.sh # 每 5 分钟执行检查
命令行的应用场景 #
1. 服务器管理 #
bash
# 查看系统状态
$ uptime
10:30:00 up 30 days, 2:15, 3 users, load average: 0.05, 0.10, 0.15
# 查看磁盘使用
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 100G 50G 50G 50% /
# 查看内存使用
$ free -h
total used free
Mem: 8G 4G 4G
2. 开发工作流 #
bash
# Git 版本控制
$ git status
$ git add .
$ git commit -m "feat: add new feature"
$ git push origin main
# 构建项目
$ npm run build
$ docker build -t myapp .
$ kubectl apply -f deployment.yaml
3. 数据处理 #
bash
# 处理 CSV 文件
$ awk -F',' '{sum+=$3} END {print sum}' data.csv
# 分析日志
$ grep "2026-04-11" access.log | wc -l
# 批量转换图片
$ for f in *.png; do convert "$f" "${f%.png}.jpg"; done
4. 系统运维 #
bash
# 服务管理
$ systemctl status nginx
$ systemctl restart nginx
$ journalctl -u nginx -f
# 用户管理
$ useradd -m -s /bin/bash newuser
$ passwd newuser
$ usermod -aG sudo newuser
学习建议 #
循序渐进 #
text
┌─────────────────────────────────────────────────────────────┐
│ 学习路径 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 第一阶段:基础命令 │
│ ├── ls, cd, pwd, mkdir, rm │
│ ├── cat, less, head, tail │
│ └── cp, mv, touch │
│ │
│ 第二阶段:进阶操作 │
│ ├── grep, find, sort, uniq │
│ ├── chmod, chown │
│ └── ps, top, kill │
│ │
│ 第三阶段:高级技巧 │
│ ├── 管道与重定向 │
│ ├── Shell 脚本编写 │
│ └── 正则表达式 │
│ │
│ 第四阶段:专家技能 │
│ ├── 系统调优 │
│ ├── 自动化运维 │
│ └── 性能分析 │
│ │
└─────────────────────────────────────────────────────────────┘
实践建议 #
- 每天使用:将命令行融入日常工作
- 记录笔记:记录常用命令和技巧
- 阅读手册:使用
man命令学习 - 动手实践:在虚拟机中练习
- 解决问题:用命令行解决实际问题
获取帮助 #
man 手册 #
bash
# 查看命令手册
$ man ls
# 查看特定章节
$ man 5 passwd # 第 5 章是文件格式
# 搜索手册
$ man -k "copy files"
info 文档 #
bash
# 查看 info 文档
$ info bash
# 更详细的信息
$ info coreutils
命令内建帮助 #
bash
# 大多数命令支持 --help
$ ls --help
$ grep --help
# 某些命令使用 -h
$ python -h
在线资源 #
bash
# 使用 tldr 获取简化帮助
$ tldr tar
# 使用 explainshell 解释命令
# 访问 https://explainshell.com
小结 #
Linux 命令行是与系统交互的强大工具。通过本节学习,你应该了解:
- 命令行的本质:文本方式与系统交互
- Shell 的作用:命令解释器,连接用户与内核
- 学习命令行的意义:效率、自动化、远程管理
- 学习路径:从基础命令到高级脚本
下一步,我们将学习终端的基础操作,包括如何启动终端和使用常用快捷键。
最后更新:2026-04-11