《Sams Linux Shell Scripting with Bash》读书笔记
Wallace R. McCamant 著,Sams(Team LinG 编校版)。一本以 Bash 为核心的 Linux shell 脚本实战手册,特点是把交互式 shell 操作、脚本编程、文本处理、系统管理、安全与网络编程串成一条完整技能链。
全书结构(18章 + 附录)
- 第1-3章 环境与交互操作:Linux 文件系统/inode/链接/设备文件基础;Bash 关键字与命令基础;命令行编辑、历史、别名、哈希表、提示符定制、会话 profile(.bashrc/.bash_profile 加载体系)
- 第4章 脚本基本形态:“well-behaved script” 规范——头部(#!/bin/bash)、全局声明、完整性检查(sanity checks)、主流程、cleanup 清理、trap 停止响应。这是全书最有工程价值的一章
- 第5-7章 语言核心:变量与引用规则(引号如何影响展开)、预定义变量、数组;表达式(if/case/while/until/for、let 算术、按位运算、模式识别、
${var:-默认}全套参数展开、${var%pattern}前后缀剥离与替换);复合命令与代码块 - 第8章 调试与版本控制:shell 调试选项(set -x/-n)、debug trap、CVS、time 计时、生成 man page、shar 归档
- 第9-10章 进程接口:位置参数与 getopts/getopt 参数解析、子 shell;作业控制、信号与 trap、退出处理器、nice/renice
- 第11-12章 文本处理:路径名/文件类型识别、wget/ftp/sftp 传输、split/mktemp/命名管道/进程替换、head/tail/cut/paste/join/merge;grep/find/sort/tr/sed/tar——一套完整的 Unix 文本工具链
- 第13-14章 控制台与函数:tput、select 菜单、dialog 交互界面;source 与 exec 语义差别、cron 周期脚本、常驻循环脚本、函数局部变量与递归
- 第15章 Shell 安全:Linux 权限模型(id/chown/chmod/umask)、setuid/setgid 与脚本的风险、chroot、ulimit 资源限制、受限 shell、安全删除(wipe)
- 第16章 网络编程:socket 概念、client-server 与 P2P、CGI 脚本与环境变量、表单处理、lynx 剥页取文
- 第17章 数据结构与数据库:用 Bash 数组实现关联数组/哈希表/二叉树(在 Bash 4 原生关联数组出现之前的技巧集);psql 与 mysql 命令行操作
- 第18章 + 附录:echo 陷阱、set 进阶、日期转换、completions、locale、fc 命令历史编辑、从 C 调脚本;附录含 Bash 内建命令汇总、选项、错误码、信号表、ASCII 表
值得记住的实战要点
- 脚本卫生:脚本要做 sanity check(命令存在性、参数个数、目录可写),用 trap 保证异常时清理临时文件——比任何语法技巧都更能区分专业与业余
- 引用是 Bash 最大坑源:变量展开何时该加双引号、
$'...'ANSI-C 转义、$"..."locale 翻译,作者用独立小节讲透 - 参数展开是迷你语言:
:-:=:?:+:n%#%%##//覆盖默认值/判空/子串/模式剥离/替换,多数场景可避免调用外部 sed/awk - source vs exec:source 在当前 shell 执行(改变当前环境),exec 替换进程镜像——理解二者才能写对部署脚本
- 管道与进程替换:命名管道 +
<(...)进程替换让无临时文件的流式处理成为可能 - 本书成书于 Bash 3 时代:Bash 4 的原生关联数组、
**递归 glob 等可作现代化对照;但”用数组手搓哈希表”仍是理解哈希的教具
定位与关联
适合作为 Bash脚本与命令行工具 类速查笔记的体系化母本;与云盘中 Sams 系列、O’Reilly Classic Shell Scripting(云盘为 CHM 格式未消化)互补。网络编程章与 TCP-IP详解卷3:T-TCP与事务协议 的应用层视角可互参。