Bash 脚本教程

以 C 作为出发点,用 C 的视角理解 Bash。


学习方式

每条学习步骤遵循三步法:

  1. 通读概念 — 理解语法、命令、机制的原理
  2. 动手实验 — 在终端中逐行运行示例,观察输出
  3. 写脚本 — 将零散命令组合成可复用的脚本

每章建议 1-2 天完成。


章节总览

flowchart TD
    A["1入门\n基础语法"] --> B["2精通\nsed/awk/进程"]
    A --> C["3实战\n一行流/部署"]
    B --> D["4系统管理\n用户/进程/磁盘"]
    B --> E["5网络编程\ncurl/socket"]
    D --> F["6工程化\n规范/测试/日志"]
    E --> F
    A --> G["7与C交互\n管道/调用"]
    F --> H["red_team/bash\n红队专题"]

与其他教程的关系

教程关系
C语言教程前置:理解变量、内存、系统调用后学Bash事半功倍
Python教程对标:同为脚本语言,Bash偏系统/管道,Python偏通用/数据
Rust教程互补:Bash做胶水,Rust写性能关键模块
红队Bash扩展:Bash安全攻防方向

章节列表

Phase 1 — 入门基础

顺序文件主题
0环境搭建安装Bash、编辑器、第一个脚本
1Shell本质bash在操作系统中的位置、shell家族
2变量与类型变量声明、类型、作用域
3输入输出echo/read/printf/heredoc
4条件判断if/elif/case/test/
5循环for/while/until/break/continue
6函数定义/参数/返回值/局部变量
7字符串操作切片/替换/匹配/长度
8数组索引数组/关联数组/遍历

Phase 2 — 精通

顺序文件主题
9进程与信号前后台/trap/信号/作业控制
10管道与重定向管道/重定向/xargs/exec
11正则表达式BRE/ERE/PCRE/grep/sed/awk
12sed替换/删除/插入/多行/地址
13awk字段/模式/数组/BEGIN-END
14调试与性能set -x/shellcheck/profiling
15子shell$()/“/子shell/进程替换
16参数展开默认值/模式匹配/替换
17错误处理trap ERR/EXIT/ERRTRAP

Phase 3 — 实战

顺序文件主题
18一行流常用命令组合/系统管理
19日志分析awk/grep分析日志
20批量处理find+xargs/批量操作
21部署脚本模板/错误处理/日志
22Bash vs Python场景对比/选型指南

Phase 4 — 系统管理

顺序文件主题
23用户权限useradd/chmod/sudo
24进程管理ps/top/kill/systemd
25磁盘df/du/mount/lvm
26网络配置ip/iptables/nftables
27定时任务crontab/systemd timer
28服务管理systemd unit编写

Phase 5 — 网络编程

顺序文件主题
29网络工具curl/wget/nc/nmap
30Socket编程/dev/tcp/文件描述符
31HTTP与APIcurl调用REST API
32文件传输scp/rsync/sftp

Phase 6 — 工程化

顺序文件主题
33脚本规范Google Shell Style Guide
34可移植性POSIX/bashisms
35测试bats框架
36日志框架日志级别/格式
37配置管理配置文件/环境变量

Phase 7 — 与C交互

顺序文件主题
38调用C程序系统调用/exec
39管道通信stdin/stdout管道
40封装工具链编译/测试自动化

学习节奏建议

Phase 1 (3-5天): 入门基础 — 变量、条件、循环、函数
Phase 2 (5-7天): 精通 — sed/awk/正则/进程管理
Phase 3 (2-3天): 实战 — 一行流/日志分析/部署
Phase 4 (3-4天): 系统管理 — 用户/进程/磁盘/网络
Phase 5 (2-3天): 网络编程 — curl/socket/HTTP
Phase 6 (2-3天): 工程化 — 规范/测试/日志
Phase 7 (1-2天): 与C交互 — 管道/调用