Shell 中文知识库
本页承担 README 与设计说明双重职责:知识库定位、目标读者、版本与平台基线、完整目录、分阶段学习路线、 统一示例项目、验证流程与兼容矩阵、安全实验边界、维护规则、RAG 切分建议,以及分批生成计划。
一、知识库定位
这是一套系统、准确、可验证、可持续维护的中文 Shell 知识库,覆盖从命令行基础到生产工程实践的完整链路: Shell 的解析与执行模型、引用与展开、变量与参数、条件与控制流、函数与脚本结构、输入输出与文件描述符 (File Descriptor,FD)、管道与重定向、进程作业与信号、文件与权限、文本处理、结构化数据、错误处理、 测试与静态检查、调试与性能、安全、可移植性、CI/CD、运维观测、系统服务、生产排障与版本迁移。
它不只罗列语法与选项,而是解释为什么如此设计、何时适用、何时不适用、如何验证。涉及 Bash 与 POSIX Shell 差异时,会明确区分 POSIX 标准保证、具体 Shell 扩展、命令实现差异、操作系统行为 与当前环境配置。
内容组织遵循“一个首页 + 一个术语表 + 一个统一示例项目 + 30 个主题目录”的形式,每篇文档是一个可独立 检索的知识单元,天然适配按章节切分后的检索增强生成(Retrieval-Augmented Generation,RAG)。
二、目标读者与前置知识
| 读者 | 使用方式 |
|---|---|
| Shell 初学者 | 按“零基础路线”从第 01 章顺序学习 |
| 开发工程师 | 速查引用展开、变量参数、函数、重定向、文本处理(04–09、13) |
| 测试工程师 | 关注测试框架、故障注入、确定性测试(17)与错误处理(16) |
| 运维工程师 / SRE | 掌握进程信号、权限、网络远程、运维观测、系统服务、排障(10–11、15、25–27) |
| 安全工程师 | 关注注入、临时文件、凭据与最小权限(19) |
- 前置知识:具备基础计算机知识即可,不要求编程或系统管理经验。涉及进阶主题时会在每篇
前置知识一节标注依赖章节。
三、版本、平台与工具链基线
本知识库以当前可访问的 POSIX 标准(IEEE Std 1003.1-2024 / The Open Group Base Specifications Issue 8)与当前受支持的 Bash 稳定版本为主,并记录核验环境。
| 项目 | 基线 | 说明 |
|---|---|---|
| POSIX 标准 | POSIX.1-2024(Issue 8) | 涉及标准语义时以其条文为准 |
| Bash(当前稳定) | 5.3.15 | 演示新特性与当前行为 |
| Bash(最低支持) | 3.2.57 | macOS 自带,跨平台脚本的常见下限 |
| dash | macOS 系统 /bin/dash | POSIX 参考实现之一 |
| ksh | 93u+ 2012-08-01 | POSIX 交叉验证 |
| zsh | 5.9 | 交互式 Shell 差异说明 |
| ShellCheck | 0.11.0 | 静态检查 |
| shfmt | 3.14.1 | 格式化(-i 4 -ci) |
| bats-core | 1.14.0 | 测试框架 |
| 操作系统 | macOS 26.6.2(25G83,arm64) | 主要验证平台 |
| Locale | zh_CN.UTF-8 | 涉及排序/编码时会显式固定 |
核验日期:2026-09-07。Linux/GNU 与 BusyBox 侧的差异结论,凡未在本机执行者均在正文中标记为 “未在本机验证”,并给出官方资料路径或最小验证脚本。
支持矩阵
| 内容类型 | dash | Bash 3.2 | Bash 5.3 | ksh93 | 备注 |
|---|---|---|---|---|---|
| POSIX 示例 | ✅ | ✅ | ✅ | ✅ | 至少两种独立实现验证 |
| Bash 专用示例 | — | ⚠️ 部分 | ✅ | — | 数组/[[ ]]/mapfile 等 |
| GNU 专用工具行为 | — | — | — | — | 需 Linux/容器验证,标注为未在本机验证 |
四、完整目录
图例:✅ 已生成正文;🚧 骨架已就位,按分批计划补齐。
| 章节 | 主题 | 状态 |
|---|---|---|
| 01 | Shell、终端、TTY 与 Unix 命令行 | ✅ |
| 02 | 环境识别、帮助系统与第一个脚本 | ✅ |
| 03 | 命令结构、查找与退出状态 | ✅ |
| 04 | 引用与展开 | ✅ |
| 05 | 变量与参数 | ✅ |
| 06 | 条件与控制流 | ✅ |
| 07 | 函数与脚本结构 | ✅ |
| 08 | 标准 I/O 与文件描述符 | ✅ |
| 09 | 管道与重定向 | ✅ |
| 10 | 进程、作业与信号 | ✅ |
| 11 | 文件、路径与权限 | ✅ |
| 12 | 核心命令 | ✅ |
| 13 | 文本处理与正则表达式 | ✅ |
| 14 | 结构化数据与编码 | ✅ |
| 15 | 网络、归档与远程工具 | ✅ |
| 16 | 错误处理与清理 | ✅ |
| 17 | 测试与静态检查 | ✅ |
| 18 | 调试与性能 | ✅ |
| 19 | 安全 | ✅ |
| 20 | POSIX 可移植性 | 🚧 |
| 21 | Bash 特性 | 🚧 |
| 22 | GNU / BSD / BusyBox 差异 | 🚧 |
| 23 | 脚本项目设计 | 🚧 |
| 24 | CI/CD 与自动化 | 🚧 |
| 25 | 运维与可观测性 | 🚧 |
| 26 | 系统与服务管理 | 🚧 |
| 27 | 生产故障排查 | 🚧 |
| 28 | 版本差异与迁移 | 🚧 |
| 29 | 综合实战项目 | 🚧 |
| 30 | 练习、代码审查与面试题 | 🚧 |
五、章节依赖与学习路线
- 零基础路线:01 → 02 → 03 → 04 → 05 → 06 → 07
- 开发者速查:04、05、06、07、09、13
- 测试工程师:07、16、17
- 运维 / SRE:10、11、15、19、25、26、27
- 可移植性专项:20、21、22、28
六、写作与脚本规范
- 区分标准与实现:明确区分 POSIX 保证、Shell 内建、外部命令、实现扩展、操作系统接口与环境配置。
- POSIX 与 Bash 分开标注:POSIX 示例用
```sh+#!/bin/sh;Bash 示例用```bash+#!/usr/bin/env bash,并说明选择依据。 - 数据与日志分离:数据写标准输出(stdout),日志与诊断写标准错误(stderr)。
- 变量引用默认加双引号;处理文件名/不可信输入时不用未引用展开,不用
for x in $(...)。 - 危险操作显式化:删除、改权限、重启、远程执行必须先给只读检查、试运行(Dry Run)、备份或回滚。
- 中文正文,原文术语:注释、解释、日志与正文用中文;命令名、选项、变量名、协议字段保留原文。
- 可复现:示例尽量给出完整脚本、运行命令、输入、stdout/stderr 与退出状态。
- 格式统一:shfmt
-i 4 -ci(4 空格缩进、case 分支缩进)。
七、示例脚本运行与验证流程
全库共享 统一示例项目。每个普通示例遵循如下验证流程:
POSIX 示例最小验证命令:
sh -n script.sh
shellcheck --shell=sh script.sh
shfmt -d -ln posix -i 4 -ci script.sh
sh script.shBash 示例最小验证命令:
bash -n script.bash
shellcheck --shell=bash script.bash
shfmt -d -ln bash -i 4 -ci script.bash
bash script.bash八、安全实验边界
- 所有示例默认运行于临时隔离目录(
mktemp -d),不接触真实生产数据。 - 脚本中不硬编码密码、Token、私钥、生产地址与真实业务数据;一律使用虚构值。
- 破坏性示例(
rm -rf、chmod -R、kill、远程执行等)仅在讲解处出现,且附只读检查、边界校验与回滚说明; 读者复现前须确认位于隔离环境并使用最小权限。 - 不使用
curl ... | sh作为默认安装方式;不关闭 SSH 主机密钥校验。
九、内容维护规则
- 版本纪律:区分首次支持版本、当前行为、最低支持版本与迁移注意事项。
- 不臆造:无法确认的内容标注“待验证”,给出官方资料路径或最小验证脚本。
- 实测优先:性能结论必须附 Shell、版本、系统、硬件、数据规模、Locale、基准方法与结果。
- 交叉引用完整:新增章节回填相关章节的“关联章节”,避免断链。
- 命名统一:目录编号、术语、示例模型全库一致。
十、RAG 切分与检索建议
- 按文档切分:每篇是自包含知识单元,建议以“文档 + 二级标题”为切分粒度。
- 利用 frontmatter:
title / category / difficulty / standards / shells / platforms / verified_versions / keywords可作为过滤与召回增强字段。 - 保留代码与表格:切分时不拆散代码块与其结果表格,否则损失“示例支持结论”的完整性。
- 实现过滤:按
shells/platforms过滤,避免召回不适用的实现行为。 - 术语归一:结合 术语表 做同义词归一(如“文件描述符 / File Descriptor / FD”)。
十一、分批生成计划与覆盖矩阵
| 批次 | 内容 | 状态 |
|---|---|---|
| 第 1 批 | README、glossary、统一示例项目、01–07 基础与语言核心章节 | ✅ 已完成 |
| 第 2 批 | 08–12 执行模型(FD、管道、进程信号、文件权限、核心命令) | ✅ 已完成 |
| 第 3 批 | 13–19 数据处理、网络远程、错误、测试、调试、安全 | ✅ 已完成 |
| 第 4 批 | 20–30 可移植性、Bash 特性、差异、项目、CI、运维、服务、排障、迁移、实战、面试 | 🚧 计划中 |
每批在完整章节边界停止,并输出:本批完成文件、验证命令与结果摘要、未验证项与已知限制、下一批内容。 回复“继续”即从断点续写,不重复已完成章节,也不删减必要的示例、测试、失败路径、安全与可移植性说明。
十二、检索关键词
Shell 知识库、Bash 教程、POSIX Shell、dash、ksh、Shell 脚本、文件描述符、管道、重定向、进程、信号、 作业控制、trap、ShellCheck、shfmt、bats、可移植性、严格模式、Shell 安全、RAG 知识源。
官方来源
- The Open Group Base Specifications Issue 8(POSIX.1-2024):https://pubs.opengroup.org/onlinepubs/9799919799/
- GNU Bash Reference Manual:https://www.gnu.org/software/bash/manual/
- ShellCheck:https://www.shellcheck.net/
- shfmt:https://github.com/mvdan/sh
- bats-core:https://bats-core.readthedocs.io/
