第 5 章 · Bash 执行与自动化
本章目标:掌握 Bash 工具的使用方式与权限模型,理解安全沙箱机制,学会用 Claude Code 自动化构建/测试/部署流程。
5.1 Bash 工具基础
Claude Code 能直接在终端执行 Shell 命令:
text
> 运行项目的测试Claude Code 会:
- 根据 CLAUDE.md 中的信息确定测试命令(如
pytest tests/ -x) - 调用 Bash 工具执行
- 分析输出结果
- 如果有失败测试,自动修复并重跑
text
正在运行 pytest tests/ -x --tb=short ...
======================== 14 passed in 2.35s ========================
所有测试通过 ✅5.2 权限模型
Bash 执行遵循分级权限策略:
| 级别 | 行为 | 示例 |
|---|---|---|
| 自动允许 | 只读操作 | ls, cat, grep, find, git status |
| 需确认 | 写入操作 | pip install, npm install, git commit |
| 默认拒绝 | 高危操作 | rm -rf /, `curl |
配置白名单
在项目 .claude/settings.json 中预授权常用命令:
json
{
"permissions": {
"allow": [
"Bash(npm run build)",
"Bash(npm test)",
"Bash(pytest *)",
"Bash(git add *)",
"Bash(ruff check *)"
],
"deny": [
"Bash(rm -rf /*)"
]
}
}5.3 安全沙箱模式
使用 --sandboxed 标志限制文件系统和网络访问:
bash
claude --sandboxed沙箱模式下:
- 文件写入限制在工作目录内
- 网络请求需要额外确认
- 系统目录只读
适合处理不受信任的代码或运行不可预测的操作。
5.4 超时设置
长时间运行的命令可以设置超时:
text
> 运行 docker-compose up 并等待 60 秒后检查状态Claude Code 默认有超时保护,防止无限阻塞。你也可以在提示中明确指定。
5.5 常见自动化场景
构建 + 测试 + Lint 一条龙
text
> 运行完整的检查流程:先 lint,再 type check,最后跑测试。如果有任何失败就修复它。Git 操作
text
> 提交当前更改,commit message 要描述清楚改了什么和为什么环境搭建
text
> 检查 Python 版本是否为 3.12,如果不是就帮我安装 pyenv 并切换本章小结
- Bash 工具让 Claude Code 直接执行 Shell 命令并分析结果;
- 三级权限:只读自动允许、写操作需确认、高危拒绝;
.claude/settings.json可配置白名单/黑名单;- 沙箱模式提供额外安全层。
🧪 随堂测验
点击你认为正确的选项。答错时会展示正确答案与原因解析。
1. Claude Code 对 ls 或 cat 这类只读 Bash 命令的默认行为是?
2. 在 .claude/settings.json 中配置 "Bash(pytest *)" 的含义是什么?
3. --sandboxed 标志的作用是什么?
4. 当 Claude Code 运行测试发现有失败时,最典型的 agentic 行为是什么?
🛠️ 动手实践
- 让 Claude Code 运行你项目的完整测试套件。
- 在 settings.json 中配置常用命令白名单。
- 让它帮你提交一次 Git commit(观察确认流程)。
完成后进入第 6 章。