Shell 是每个工程师绕不开的语言:部署脚本、定时任务、CI 步骤、数据管道,处处是它的身影。真正理解变量的词分裂、管道的子进程语义、信号的异步处理,才能写出不踩坑的脚本。
本专题共收录 42 篇深度文章。前 6 篇从变量与流程控制出发,依次展开 awk/sed 文本处理、进程管道与信号、参数解析与错误处理、脚本工程化规范,最终落到调试与安全防护,形成「语法 → 文本 → 进程 → 健壮 → 规范 → 安全」的完整 Shell 能力链路。后 6 篇在此基础上继续深入数组与函数进阶、xargs 与并行处理、SSH 远程自动化、定时任务调度、网络请求诊断与脚本性能优化,把脚本能力从单机串行拓展到并发、远程与调优的实战场景。最新 6 篇进一步覆盖交互式命令自动化(expect/pty)、文件与 IO 进阶(重定向/文件锁)、结构化数据处理(jq/yq)、Git 自动化实践(hooks/版本脚本)、终端 UI 与进度条(ANSI 控制码)以及部署与发布脚本(版本/回滚/健康检查),让 Shell 能力延伸到自动化、数据与发布的全链路工程。本次新增 6 篇则补齐了脚本的「工程化闭环」:zsh 与 bash 的兼容移植、Bats 测试与 shellcheck 静态检查、systemd 单元与定时器托管、容器 entrypoint 与信号处理、日志解析与聚合告警、备份与 rsync 同步策略,让脚本从「能跑」走向「可移植、可测试、可托管、可观测、可恢复」。本批六篇继续向「交互」与「集成」两端扩展:dialog 与 fzf 的终端交互界面、密钥与凭据的安全处理、数据库 CLI 批处理自动化、图片与媒体批处理、云 CLI 自动化,以及环境引导与初始化脚本,把脚本从「运维胶水」升级为「可交付的自动化工具」。本批六篇继续补齐日常脚本的高频硬骨头:find 与 fd 的文件查找批量操作、date 与时区换算的跨平台差异、flock 与文件锁的并发控制、CSV/TSV 结构化数据清洗、inotifywait 的文件监控与事件驱动流水线,以及把 make 当作任务运行器的编排实践。 本次新增 6 篇则补齐可移植性与运维脚本:现代 Shell(fish/nushell)与迁移、PowerShell 跨平台脚本、POSIX 可移植性、二进制数据处理、监控采集与告警,以及日志轮转与归档。
📌 相关专题:Linux 专题 (系统命令与运维)、DevOps 专题 (CI/CD 与自动化)、Nginx 专题 (服务管理脚本)
一、语法与文本
- 变量、流程控制与函数 — 词分裂与引号差异、${var:-default}、if/for/while/case、函数作用域
- awk 与 sed 文本处理实战 — FS/OFS/NF/NR、awk 字段与统计、sed 行寻址与流编辑、组合实战
- 数组与函数进阶 — 索引/关联数组、函数参数与返回值、作用域与递归、声明式编程
- xargs 与并行处理实战 — 参数传递与占位符、-P 并行、GNU parallel、并行下载与批量任务
- zsh 与 bash 兼容移植 — 数组与关联数组差异、glob 与 nullglob、参数扩展修饰符、shebang 选择、set -euo pipefail 行为差异、可移植写法清单
- 文件查找与批量操作 — find 表达式求值与优先级、fd 与 ripgrep 的现代替代、-exec 与 xargs 的取舍、特殊文件名与空字节分隔、批量重命名与安全删除
- 结构化数据清洗与报表生成 — csvkit 与 miller 的取舍、awk 字段处理与聚合、引号与转义陷阱、编码转换与 BOM 处理、终端报表与图表输出
二、进程与健壮性
- 进程、管道与信号控制 — 作业控制、子进程与 exec、管道缓冲、FIFO、trap 信号处理
- 参数解析与错误处理 — getopts/shift/IFS、set -euo pipefail、错误码规范、防御式校验
- SSH 远程自动化实战 — SSH 配置与免密、远程执行、rsync 同步、隧道转发、批量主机管理
- 定时任务调度实战 — cron 语法、at/Anacron、systemd timer、日志错误处理、重叠防护
- systemd 单元与定时器 — service 单元与重启策略、timer 与 OnCalendar、依赖与顺序、journald 日志、与 cron 的取舍、用户级单元
- 日期时间与时区处理 — date 格式化与解析、GNU 与 BSD 参数差异、UTC 与本地时区换算、epoch 时间戳比较与运算、日志时间戳对齐与调度时间计算
- 并发控制与文件锁 — 竞态条件的本质、flock 的两种用法与作用域、锁文件的原子创建、任务去重与互斥、锁超时与陈旧锁清理、多进程安全追加日志
三、工程与安全
- 脚本工程化与规范 — 脚本结构、ShellCheck、日志规范、模块化与复用
- 调试技巧与安全防护 — set -x/xtrace、trap 调试、引号注入防护、危险命令防护
- 网络请求与诊断实战 — curl 参数/重试/代理/上传、HTTP 状态诊断、DNS 与连通性排查
- 脚本性能优化实战 — 启动开销、子进程与内置命令、命令缓存、流式处理、基准与剖析
- 脚本测试与静态检查(Bats 与 shellcheck) — Bats 用例与断言、setup/teardown 夹具、mock 外部命令、shellcheck 规则与豁免、CI 集成与覆盖率
- 日志解析与聚合 — 按模式提取字段、时间窗口统计、滚动聚合与去重、错误率与阈值告警、awk/sort/uniq 组合套路
- 密钥与凭据安全处理 — 避免明文与进程可见泄漏、环境变量与文件权限、keyring 与 vault 取用、日志脱敏与审计、凭据轮换脚本
- 环境初始化与引导脚本 — 依赖探测与版本校验、幂等安装与重复执行安全、配置文件落盘与模板渲染、失败回滚与清理、自检与健康报告
- 任务编排与 Makefile — 目标与依赖的语义、PHONY 与增量判断、并行执行与作业数、变量与内置函数、与 just/task 的取舍、CI 中的任务入口统一
四、自动化与发布
- 交互式命令自动化(expect 与 pty) — expect 的 spawn/expect/send 驱动登录与菜单、heredoc 轻量喂输入、超时与场景封装
- 文件与 IO 进阶(重定向与文件锁) — 文件描述符与顺序语义、进程替换、临时文件与 trap 清理、flock 并发安全
- 结构化数据处理(jq 与 yq) — JSON/YAML 解析与转换、select/map 过滤变换、配置生成、API 数据提取
- Git 自动化实践(hooks 与版本脚本) — Git hooks 生命周期、commit-msg 校验、批量仓库操作、语义化版本与 changelog
- 终端 UI 与进度条(ANSI 控制码) — 颜色与光标控制、进度条与交互输入、信号捕获与终端恢复、跨平台差异
- 部署与发布脚本(版本/回滚/健康检查) — 构建产物管理、版本号语义化、健康检查与探活、发布门禁与审批
- 容器 entrypoint 与信号处理 — PID 1 与僵尸回收、exec 与信号转发、SIGTERM 优雅退出、配置渲染、tini/dumb-init、健康检查脚本
- 备份与 rsync 同步策略 — 增量同步与硬链接快照、排除规则与删除语义、校验与完整性检查、恢复演练、异地加密同步、保留策略
- 终端交互界面(dialog 与 fzf) — dialog/whiptail 菜单与表单、fzf 模糊选择与预览、进度展示与中断处理、非交互环境的降级与 –yes 模式
- 数据库 CLI 自动化 — psql/mysql 批处理与 -c/-e、事务与错误码处理、导出导入与格式选择、连接参数与密码安全、批量迁移脚本
- 图片与媒体批处理 — ImageMagick 缩放与水印、ffmpeg 转码与抽帧、并行处理与断点续跑、元数据读写与校验、产物命名与归档
- 云 CLI 自动化 — aws/az/gcloud 的 JSON 输出与 jq 解析、分页与 wait 轮询、幂等脚本设计、凭据与区域配置、批量资源操作与限流
- 文件监控与事件驱动流水线 — inotifywait 与 fswatch 的事件模型、事件去抖与合并、触发式流水线的可靠性设计、watcher 生命周期与自愈、容器与网络文件系统下的限制
五、可移植性、二进制与运维脚本
- 现代 Shell:fish、nushell 与迁移 — fish 与 nushell 的语言模型差异、结构化数据与管道语义、配置与插件生态、与 POSIX sh 的互操作、迁移与团队落地
- PowerShell 跨平台脚本 — 对象管道与 Cmdlet 模型、跨平台差异与路径语义、错误处理与严格模式、与 bash 的互操作、CI 与运维自动化
- Shell 脚本的 POSIX 可移植性 — POSIX sh 与 bash/zsh 方言差异、dash 与 busybox 限制、GNU 与 BSD 工具分歧、可移植写法与检测、CI 多环境验证
- Shell 处理二进制数据 — 字节流与十六进制工具、dd/xxd/od 与切割拼接、编码与校验和、大文件流式处理、与文本处理的边界
- 监控采集与告警脚本 — 指标采集与格式约定、阈值与迟滞去抖、告警通道与可靠性、静默与升级策略、与 Prometheus/告警平台集成
- 日志轮转与归档 — logrotate 配置与钩子、压缩时序与写入冲突、按大小与时间切分、归档与生命周期、容器与 systemd 场景下的替代方案
延伸阅读
- Linux 专题 — 系统命令、文件系统与运维基础
- DevOps 专题 — CI/CD 中的 Shell 自动化实践
- Nginx 专题 — 服务管理脚本与日志轮转
- Terraform 专题 — IaC 中的 Shell provisioner 配合
专题统计
- 文章数量: 42 篇核心教程
- 覆盖领域: 变量流程、awk/sed、进程管道信号、参数错误处理、工程化、调试安全、数组函数、xargs 并行、SSH 远程、定时调度、网络诊断、性能优化、交互式自动化(expect)、文件 IO 与锁、结构化数据(jq/yq)、Git 自动化与 hooks、终端 UI 与进度条、部署发布与回滚、zsh/bash 兼容移植、Bats 测试与 shellcheck、systemd 单元与定时器、容器 entrypoint 与信号处理、日志解析与聚合告警、备份与 rsync 同步、dialog、fzf、TUI 交互、密钥与凭据、keyring、日志脱敏、数据库 CLI、psql、mysql、批处理事务、图片媒体批处理、ImageMagick、ffmpeg、云 CLI、aws、az、gcloud、幂等脚本、环境引导与初始化、find、fd、批量重命名、csvkit、miller、CSV 清洗、编码转换、报表生成、date、时区换算、epoch 时间戳、flock、文件锁、竞态条件、任务去重、陈旧锁、inotifywait、fswatch、事件去抖、事件驱动流水线、make、Makefile、PHONY、任务编排
- 难度分布: 入门 20% → 中级 50% → 进阶 30%
- 先修要求: Linux 基础命令、编辑器
- 总预估阅读时间: 约 1600 分钟