概述
Bash 工具为 Claude 提供:- 维护状态的持久 bash 会话
- 运行任何 shell 命令的能力
- 访问环境变量和工作目录
- 命令链接和脚本编写功能
模型兼容性
| 模型 | 工具版本 |
|---|---|
| Claude 4 模型和 Sonnet 3.7 | bash_20250124 |
| Claude Sonnet 3.5 (已弃用) | bash_20241022 |
Claude Sonnet 3.5 (已弃用) 在使用 bash 工具时需要
computer-use-2024-10-22 beta 头部。Bash 工具在 Claude 4 模型和 Sonnet 3.7 中普遍可用。旧版本的工具不保证与新模型向后兼容。始终使用与您的模型版本对应的工具版本。
用例
- 开发工作流程:运行构建命令、测试和开发工具
- 系统自动化:执行脚本、管理文件、自动化任务
- 数据处理:处理文件、运行分析脚本、管理数据集
- 环境设置:安装包、配置环境
快速开始
工作原理
Bash 工具维护一个持久会话:- Claude 确定要运行什么命令
- 您在 bash shell 中执行命令
- 将输出(stdout 和 stderr)返回给 Claude
- 会话状态在命令之间持续存在(环境变量、工作目录)
参数
| 参数 | 必需 | 描述 |
|---|---|---|
command | 是* | 要运行的 bash 命令 |
restart | 否 | 设置为 true 以重启 bash 会话 |
restart,否则为必需
使用示例
使用示例
示例:多步骤自动化
Claude 可以链接命令来完成复杂任务:实现 bash 工具
Bash 工具作为无模式工具实现。使用此工具时,您不需要像其他工具那样提供输入模式;模式内置在 Claude 的模型中,无法修改。1
设置 bash 环境
创建 Claude 可以交互的持久 bash 会话:
2
处理命令执行
创建一个函数来执行命令并捕获输出:
3
处理 Claude 的工具调用
从 Claude 的响应中提取并执行命令:
4
实施安全措施
添加验证和限制:
处理错误
在实现 bash 工具时,处理各种错误场景:命令执行超时
命令执行超时
如果命令执行时间过长:
命令未找到
命令未找到
如果命令不存在:
权限被拒绝
权限被拒绝
如果存在权限问题:
遵循实施最佳实践
使用命令超时
使用命令超时
实施超时以防止挂起的命令:
维护会话状态
维护会话状态
保持 bash 会话持久以维护环境变量和工作目录:
处理大输出
处理大输出
截断非常大的输出以防止令牌限制问题:
记录所有命令
记录所有命令
保留执行命令的审计跟踪:
清理输出
清理输出
从命令输出中删除敏感信息:
安全性
Bash 工具提供直接的系统访问。实施这些基本安全措施:
- 在隔离环境中运行(Docker/VM)
- 实施命令过滤和允许列表
- 设置资源限制(CPU、内存、磁盘)
- 记录所有执行的命令
关键建议
- 使用
ulimit设置资源约束 - 过滤危险命令(
sudo、rm -rf等) - 以最小用户权限运行
- 监控和记录所有命令执行
定价
The bash tool adds 245 input tokens to your API calls. Additional tokens are consumed by:- Command outputs (stdout/stderr)
- Error messages
- Large file contents
常见模式
开发工作流程
- 运行测试:
pytest && coverage report - 构建项目:
npm install && npm run build - Git 操作:
git status && git add . && git commit -m "message"
文件操作
- 处理数据:
wc -l *.csv && ls -lh *.csv - 搜索文件:
find . -name "*.py" | xargs grep "pattern" - 创建备份:
tar -czf backup.tar.gz ./data
系统任务
- 检查资源:
df -h && free -m - 进程管理:
ps aux | grep python - 环境设置:
export PATH=$PATH:/new/path && echo $PATH
限制
- 无交互式命令:无法处理
vim、less或密码提示 - 无 GUI 应用程序:仅限命令行
- 会话范围:在对话中持续存在,在 API 调用之间丢失
- 输出限制:大输出可能被截断
- 无流式传输:完成后返回结果