Ch15 §01 Linux 与命令行 · 讲解稿¶
章节定位: Ch15 日常工具。教"开发者必备 shell 技能": 文件/权限/进程/网络/管道。 承接: Ch13 §03 OS 原理 → Ch15 §01 日常使用 走向: §02 Git / §03 代码设计 / §04 测试 / §05 DevOps 篇幅: ~3700 字 / 阅读 11 分钟 / 讲解 22-25 分钟
一 · 一句话总览¶
Linux/CMD = AI 工程师的日常工具: 文件浏览 (ls/cat/grep) + 权限 (chmod) + 进程 (ps/kill) + 网络 (curl/ssh) + 管道 (|) + shell 脚本。AI 工程师 90% 时间在终端。
二 · 章节主线 (5 段)¶
第 1 段 · 文件系统与浏览 (8 分钟)¶
3.1.1 目录结构¶
Linux 是树形, 根 /。常见目录:
| 目录 | 用途 |
|---|---|
/home/user/ |
用户目录 |
/etc/ |
配置 |
var log 路径 |
日志 (系统目录) |
tmp 路径 |
临时 (系统目录) |
/usr/bin/ |
系统命令 |
/data/ |
数据 (常自建) |
3.1.2 浏览命令¶
3.1.3 文件操作¶
cat file.txt # 全文输出
less file.txt # 分页
head -n 10 file # 前 10 行
tail -n 20 file # 后 20 行
tail -f log.txt # 实时跟踪
cp src dst # 复制
mv src dst # 移动 / 重命名
rm -rf dir # 递归删除 (慎用!)
mkdir -p a/b/c # 创建多级目录
3.1.4 查找¶
find / -name "*.py" # 按名
find . -size +100M # 按大小
find . -mtime -7 # 7 天内修改
grep -rn "PLACEHOLDER" src/ # 文件内容
grep -i "error" log.txt # 大小写不敏感
第 2 段 · 权限与用户 (8 分钟)¶
3.2.1 权限位¶
rwx 三位分别 owner / group / other:
- r (4): 读
- w (2): 写
- x (1): 执行
3.2.2 owner / group¶
3.2.3 su / sudo¶
3.2.4 SSH¶
ssh user@host # 登录
ssh -i ~/.ssh/key.pem user@host # 用私钥
ssh -L 8080:localhost:80 host # 端口转发
scp file user@host:/path/ # 上传
rsync -avz src/ host:dst/ # 同步
3.2.5 安全¶
~/.ssh/authorized_keys: 公钥~/.ssh/config: 别名配置- 不要 root 密码登录, 用 key
第 3 段 · 进程与系统监控 (8 分钟)¶
3.3.1 进程查看¶
3.3.2 进程控制¶
3.3.3 信号¶
| 信号 | 编号 | 用途 |
|---|---|---|
| SIGHUP | 1 | 终端断开 |
| SIGINT | 2 | Ctrl+C |
| SIGTERM | 15 | kill 默认 |
| SIGKILL | 9 | 强杀 |
3.3.4 服务管理¶
systemctl status nginx # 查状态
systemctl start nginx # 启动
systemctl enable nginx # 开机启动
journalctl -u nginx -f # 看日志
3.3.5 资源监控¶
free -h # 内存
df -h # 磁盘
nvidia-smi # GPU
iostat -x 1 # IO
netstat -tulnp # 端口
ss -tulnp # 现代版 netstat
第 4 段 · 网络与 HTTP (8 分钟)¶
3.4.1 curl¶
curl https://api.example.com # GET
curl -X POST -H "Content-Type: application/json" \
-d '{"key":"value"}' \
https://api.example.com/data # POST
curl -I https://example.com # 只看 header
curl -L https://short.url # 跟随重定向
3.4.2 wget¶
下载文件, 比 curl 简单。
3.4.3 ssh 隧道¶
# 本地端口转发: localhost:8080 → host:80
ssh -L 8080:localhost:80 user@host
# 反向隧道: host:8080 → localhost:80
ssh -R 8080:localhost:80 user@host
用于: 远程开发, 访问内部服务。
3.4.4 nc (netcat)¶
调试 TCP/UDP:
3.4.5 DNS 排查¶
第 5 段 · Shell 脚本与管道 (8 分钟)¶
3.5.1 管道与重定向¶
cat file | grep "PLACEHOLDER" | wc -l # 计数
cmd > file # 覆盖输出
cmd >> file # 追加
cmd 2>&1 # 错误也输出
cmd < file # 输入
3.5.2 常用命令组合¶
# 找最大文件
du -sh * | sort -hr | head
# 统计代码行数
find . -name "*.py" | xargs wc -l
# 监控日志错误
tail -f log.txt | grep --line-buffered ERROR
# 批量重命名
for f in *.txt; do mv "$f" "${f%.txt}.md"; done
3.5.3 Bash 脚本¶
#!/bin/bash
set -euo pipefail
NAME=${1:-world}
echo "Hello, $NAME!"
for i in {1..5}; do
echo "Iteration $i"
done
set -e: 错即停; set -u: 未定义变量错; set -o pipefail: 管道任一错即停。
3.5.4 环境变量¶
~/.bashrc 或 ~/.zshrc 永久生效。
3.5.5 tmux / screen¶
终端复用:
AI 训练常用: SSH 断开会话不丢。
三 · 易错点 (5 条)¶
- rm -rf: 慎用, 不可恢复。
- chmod 777: 太宽, 安全风险。
- kill -9: 应先 SIGTERM。
- curl POST 默认: 不带 body, 需
-d或-X POST。 - sudo 与 su: 不要混用, 选一个。
四 · 跨章连接¶
| 章节 | 关联 |
|---|---|
| Ch13 §03 操作系统 | 进程 / 文件 / 权限原理 |
| Ch13 §04 并发 | 进程后台运行 |
| Ch15 §05 DevOps | 服务部署 (systemd) |
五 · 自测 5 题¶
chmod 755含义?ps aux与top区别?kill -9与kill -15区别?- curl POST 写法?
set -e含义?
六 · 一句话总结¶
Linux/CMD = 开发者必备。文件 (find/grep) + 权限 (chmod) + 进程 (ps/kill) + 网络 (curl/ssh) + 管道 (|) + shell 脚本。Ch15 §02 教 Git 版本管理。
七 · 板书建议¶
[板书 1: 浏览]
ls / cat / grep / find
[板书 2: 权限]
rwx 4/2/1
chmod 755
[板书 3: 进程]
ps / top / kill
SIGTERM / SIGKILL
[板书 4: 网络]
curl / ssh / nc
端口转发
[板书 5: Shell]
| 管道
set -euo pipefail
八 · 参考资料¶
- "The Linux Command Line" (免费书)
man bash- Ch13 §03 操作系统 (本套书)
- Ch15 §05 DevOps (本套书)