Skip to content

第 5 章 · Bash 执行与自动化

本章目标:掌握 Bash 工具的使用方式与权限模型,理解安全沙箱机制,学会用 Claude Code 自动化构建/测试/部署流程。

5.1 Bash 工具基础

Claude Code 能直接在终端执行 Shell 命令:

text
> 运行项目的测试

Claude Code 会:

  1. 根据 CLAUDE.md 中的信息确定测试命令(如 pytest tests/ -x
  2. 调用 Bash 工具执行
  3. 分析输出结果
  4. 如果有失败测试,自动修复并重跑
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 行为是什么?

🛠️ 动手实践

  1. 让 Claude Code 运行你项目的完整测试套件。
  2. 在 settings.json 中配置常用命令白名单。
  3. 让它帮你提交一次 Git commit(观察确认流程)。

完成后进入第 6 章