跳到主要内容

Shell 学习笔记索引

GNU Bash Manual 通读后的整理笔记,按主题分类;每条均可独立阅读。

一、总览 / 规范

  • posix-and-shells.md — POSIX 是什么,sh / dash / bash / zsh / ksh 的关系与取舍
  • features.md — Bash 独有特性全景(数组、[[((、进程替换、coproc…)
  • vs-bourne.md — 对照 SVR4.2 sh 的完整差异清单(Appendix B)
  • shell-variables.md — Bourne Shell Variables vs Bash Variables 的分层与区别

二、参数、变量、展开

  • parameter-expansion.md${…} 全套展开:模式移除、子串、替换、间接、变换 @X
  • declare.md — 属性与作用域:-i/-a/-A/-r/-x/-n/-l/-ulocal/readonly
  • read.mdread-r/-p/-e/-i/-s/-t/-n/-d,默认 REPLY

三、重定向与文件描述符

  • fd-varname.md{var}<file 自动分配 fd 的机制、生命周期与实战

四、进程、作业、协程

  • job-control.mdjobs/fg/bg/wait/disown、jobspec、set -mauto_resume
  • coproc.mdcoproc 协程:fd 对、异步交互模式、与 exec {fd} 的配合

五、启动、执行、行为开关

  • exec.mdexec 替换进程镜像 / 仅重定向 / 改 argv0 的三种用法
  • set.mdset 系列开关:-e -u -o pipefail -x
  • shopt.mdshopt 细粒度选项:globstar/extglob/nullglob/inherit_errexit

六、陷阱与调试

  • trap.md — 信号与伪信号:EXIT/ERR/DEBUG/RETURNfunctrace/errtrace
  • caller.mdcaller 打印调用栈,配合 BASH_SOURCE/BASH_LINENO

七、内建命令综合

  • builtin.mdbuiltin / command 绕过函数覆盖;内建查找优先级
  • bind.md — Readline 绑定查看与修改

八、交互体验

  • readline.md — 行编辑 + ~/.inputrc + 可编程补全(complete/compgen/compopt
  • history.mdHIST* 变量、history/fc、history expansion

九、源码精读

  • z_reading_guide.mdrupa/z 源码拆解:frecency 公式、aging 机制、Shell 冷僻语法与原子性设计

建议的阅读顺序

  1. 打地基posix-and-shellsfeaturesvs-bourne
  2. 变量与展开shell-variablesparameter-expansiondeclare
  3. 输入输出readfd-varnameexec
  4. 控制流与错误处理setshopttrapcaller
  5. 进程模型job-controlcoproc
  6. 交互层(可选):readlinehistorybind
  7. 内建参考builtin 按需查阅

下一步巩固

详见 practice-guide.md:巩固方法、推荐源码、4 周学习路径。

  • 每个脚本 shellcheck + shfmt 常驻
  • bats-core 给自己写的函数库加测试
  • 精读源码:rupa/zdirenv/stdlib.shbash-completion/completions/fzf 的 shell 集成
  • 读 Greg's Wiki:BashPitfalls / BashFAQ / BashGuide(mywiki.wooledge.org)