8.1 命令組合基礎
在前面的章節中,我們已經學習了 CLI 命令、CLI 標誌和斜槓命令的單獨使用。在本章中,我們將學習如何將這些命令和標誌組合起來,建立更強大、更高效的自動化工作流。
命令組合的概念
命令組合是指將多個命令、標誌和引數按照一定的邏輯組合在一起,以實現複雜的功能。透過命令組合,您可以:
- 串聯多個操作 :將多個獨立的命令串聯起來執行
- 傳遞資料 :使用管道將一個命令的輸出傳遞給另一個命令
- 條件執行 :根據前一個命令的結果決定是否執行後續命令
- 並行處理 :同時執行多個獨立的命令以提高效率
基本组合模式
1. 标志组合
最簡單的組合方式是同時使用多個標誌來配置 Claude Code 的行為。
示例:使用多个标志
bash
# 使用多个标志配置会话
claude --model sonnet --verbose --add-dir ./src --add-dir ./tests
這個命令組合了四個標誌:
--model sonnet:指定使用 Sonnet 模型--verbose:啟用詳細日誌記錄--add-dir ./src:新增 src 目錄--add-dir ./tests:新增 tests 目錄
標誌組合的原則
- 順序無關 :大多數標誌的順序不影響功能
- 優先順序 :後指定的標誌可能覆蓋前面的標誌
- 相容性 :某些標誌可能互斥,不能同時使用
2. 管道組合
使用管道(|)將一個命令的輸出傳遞給另一個命令。
示例:处理文件内容
bash
# 读取文件并通过管道传递给 Claude Code
cat main.py | claude -p "优化这段代码的性能"
這個命令的工作流程:
cat main.py:讀取 main.py 檔案的內容|:將檔案內容透過管道傳遞claude -p "优化这段代码的性能":接收檔案內容並執行最佳化任務
python
#### 示例:链式处理
bash
# 多个命令的链式处理
cat code.py | claude -p "提取函数定义" | grep "def " | sort這個命令的工作流程:
cat code.py:讀取 code.py 檔案claude -p "提取函数定义":提取所有函式定義grep "def ":過濾出包含 "def " 的行sort:對結果進行排序
管道組合的注意事項
- 資料格式 :確保管道傳遞的資料格式正確
- 錯誤處理 :管道中的任何命令失敗都會導致整個鏈失敗
- 效能考慮 :長管道鏈可能影響效能
3. 命令替換
使用命令替換將一個命令的輸出作為另一個命令的引數。
示例:使用命令替换
bash
# 将命令输出作为参数
claude -p "审查 $(git diff --name-only) 中的文件"
這個命令的工作流程:
git diff --name-only:獲取修改的檔案列表$():將輸出作為引數傳遞claude -p "审查 ... 中的文件":審查這些檔案
示例:动态参数
bash
# 根据当前分支动态生成参数
claude -p "为 $(git branch --show-current) 分支生成提交信息"
4. 条件执行
根據前一個命令的執行結果決定是否執行後續命令。
示例:使用 && 操作符
bash
# 前一个命令成功后才执行后一个命令
claude -p "生成测试代码" && claude -p "运行测试"
這個命令的工作流程:
- 執行
claude -p "生成测试代码" - 如果成功,執行
claude -p "运行测试" - 如果失敗,不執行後續命令
示例:使用 || 操作符
bash
# 前一个命令失败时才执行后一个命令
claude -p "尝试快速修复" || claude -p "使用备用方案"
這個命令的工作流程:
- 執行
claude -p "尝试快速修复" - 如果失敗,執行
claude -p "使用备用方案" - 如果成功,不執行後續命令
示例:使用 ; 操作符
bash
# 无论前一个命令是否成功都执行后一个命令
claude -p "生成代码" ; claude -p "生成文档"
5. 后台执行
將命令放在後臺執行,不阻塞當前終端。
示例:后台执行
bash
# 在后台执行长时间运行的任务
claude -p "分析大型项目" &
這個命令的工作流程:
&:將命令放在後臺執行- 命令在後臺執行,終端可以繼續使用
示例:并行执行多个任务
bash
# 并行执行多个独立的任务
claude -p "分析前端代码" &
claude -p "分析后端代码" &
claude -p "分析测试代码" &
wait
這個命令的工作流程:
- 同時啟動三個獨立的任務
- 每個任務在後臺執行
wait:等待所有後臺任務完成
高级组合模式
1. 函数封装
將命令組合封裝成函式,便於重複使用。
#### 示例:Bash 函数
bash
# 定义一个代码审查函数
code_review() {
local file=$1
claude -p "审查 $file 的代码质量、安全性和性能" --output-format json
}
# 使用函数
code_review main.py
code_review utils.js
#### 示例:带参数的函数
bash
# 定义一个带多个参数的函数
analyze_project() {
local project_dir=$1
local model=$2
local output_format=$3
claude --model "$model" \
--add-dir "$project_dir" \
-p "分析项目结构和代码质量" \
--output-format "$output_format"
}
# 使用函数
analyze_project ./myproject sonnet json
### 2\. 循环处理使用迴圈批次處理多個檔案或專案。
示例:for 循环
bash
# 批量处理多个文件
for file in *.py; do
claude -p "优化 $file 的性能" > "${file%.py}.optimized.py"
done
這個命令的工作流程:
- 遍歷所有 .py 檔案
- 對每個檔案執行最佳化任務
- 將結果儲存到 .optimized.py 檔案
示例:while 循环
bash
# 持续监控文件变化
while inotifywait -e modify *.py; do
claude -p "检测到文件变化,重新分析代码"
done
3. 数组处理
使用陣列儲存和處理多個專案。
#### 示例:数组遍历
bash
# 定义项目数组
projects=("frontend" "backend" "api" "tests")
# 遍历数组并处理每个项目
for project in "${projects[@]}"; do
claude --add-dir "./$project" -p "分析 $project 项目"
done
#### 示例:动态数组
bash
# 动态生成数组
files=($(git diff --name-only))
# 处理数组中的每个文件
for file in "${files[@]}"; do
claude -p "审查 $file 的变更"
done
## 命令组合的最佳实践
### 1\. 可读性
* **使用註釋** :為複雜的命令組合新增註釋
* **合理換行** :長命令使用反斜槓換行
* **命名變數** :使用有意義的變數名
#### 示例:提高可读性
bash
# 定义变量
PROJECT_DIR="./myproject"
MODEL="sonnet"
OUTPUT_FORMAT="json"
# 使用变量和注释
claude \
--model "$MODEL" \
--add-dir "$PROJECT_DIR" \
--add-dir "$PROJECT_DIR/tests" \
--add-dir "$PROJECT_DIR/docs" \
-p "分析项目结构和代码质量" \
--output-format "$OUTPUT_FORMAT"
### 2\. 错误处理- 檢查退出碼 :檢查命令是否成功執行
- 捕獲錯誤 :使用 trap 捕獲錯誤
- 提供反饋 :為使用者提供清晰的錯誤資訊
bash
#### 示例:错误处理
bash
# 检查命令是否成功
if claude -p "生成代码"; then
echo "代码生成成功"
else
echo "代码生成失败"
exit 1
fi
# 使用 trap 捕获错误
trap 'echo "发生错误,退出码: $?"' ERR
claude -p "执行任务1"
claude -p "执行任务2"
claude -p "执行任务3"
### 3\. 性能优化- 並行執行 :使用後臺執行和 wait 提高效率
- 快取結果 :避免重複執行相同的命令
- 增量處理 :只處理變化的部分
bash
#### 示例:性能优化
bash
# 并行处理多个文件
for file in *.py; do
claude -p "分析 $file" > "${file%.py}.analysis.json" &
done
wait
# 使用缓存
CACHE_FILE="analysis.cache"
if [ -f "$CACHE_FILE" ]; then
echo "使用缓存结果"
cat "$CACHE_FILE"
else
claude -p "分析项目" > "$CACHE_FILE"
fi
### 4\. 可维护性
* **模組化** :將複雜的命令組合拆分成多個函式
* **配置化** :使用配置檔案管理引數
* **文件化** :為命令組合編寫文件
#### 示例:模块化
bash
# 定义模块化函数
setup_environment() {
claude --add-dir ./src --add-dir ./tests --add-dir ./config
}
generate_code() {
claude -p "生成代码"
}
run_tests() {
claude -p "运行测试"
}
# 组合函数
main() {
setup_environment
generate_code
run_tests
}
# 执行主函数
main
## 常见组合场景
### 1\. 代码审查工作流
bash
# 完整的代码审查工作流
claude -p "审查最近的代码变更" \
--output-format json \
> review.json && \
claude -p "根据审查结果生成修复建议" \
--input-format json \
< review.json
### 2\. 文档生成工作流
bash
# 自动生成文档
claude -p "提取所有函数和类的文档注释" \
--output-format json \
> docs.json && \
claude -p "根据提取的信息生成 Markdown 文档" \
--input-format json \
< docs.json > README.md
### 3\. 测试工作流
bash
# 自动化测试工作流
claude -p "生成测试用例" > test_cases.txt && \
claude -p "运行测试用例" && \
claude -p "分析测试结果" --output-format json > test_results.json
### 4\. 部署工作流
bash
# 自动化部署工作流
claude -p "检查代码质量" && \
claude -p "生成部署清单" && \
claude -p "执行部署脚本" && \
claude -p "验证部署结果"
## 总结命令組合是發揮 Claude Code 強大功能的關鍵。透過掌握基本的組合模式(標誌組合、管道組合、命令替換、條件執行、後臺執行)和高階組合模式(函式封裝、迴圈處理、陣列處理),您可以建立強大、高效的自動化工作流。
記住以下要點:
- 從簡單開始 :先掌握基本的組合模式
- 逐步複雜 :在掌握基礎後嘗試高階模式
- 注重實踐 :透過實際專案練習命令組合
- 持續最佳化 :不斷改進和最佳化您的命令組合
在接下來的章節中,我們將學習如何將這些命令組合應用到指令碼編寫、CI/CD 整合、批處理操作和實際工作流中。