概述
Bash 工具為 Claude 提供:- 維持狀態的持久 bash 會話
- 運行任何 shell 命令的能力
- 訪問環境變數和工作目錄
- 命令鏈接和腳本編寫功能
模型相容性
| 模型 | 工具版本 |
|---|---|
| Claude 4 模型和 Sonnet 3.7 (已棄用) | bash_20250124 |
舊版工具版本不保證與較新模型向後相容。始終使用與您的模型版本相對應的工具版本。
使用案例
- 開發工作流程:運行構建命令、測試和開發工具
- 系統自動化:執行腳本、管理文件、自動化任務
- 數據處理:處理文件、運行分析腳本、管理數據集
- 環境設置:安裝軟件包、配置環境
快速開始
工作原理
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 調用之間丟失
- 輸出限制:大型輸出可能被截斷
- 無流式傳輸:完成後返回結果