Skip to content

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 "优化这段代码的性能"

這個命令的工作流程:

  1. cat main.py:讀取 main.py 檔案的內容
  2. |:將檔案內容透過管道傳遞
  3. claude -p "优化这段代码的性能":接收檔案內容並執行最佳化任務
python
#### 示例:链式处理

    bash


    # 多个命令的链式处理
    cat code.py | claude -p "提取函数定义" | grep "def " | sort

這個命令的工作流程:

  1. cat code.py:讀取 code.py 檔案
  2. claude -p "提取函数定义":提取所有函式定義
  3. grep "def ":過濾出包含 "def " 的行
  4. sort:對結果進行排序

管道組合的注意事項

  • 資料格式 :確保管道傳遞的資料格式正確
  • 錯誤處理 :管道中的任何命令失敗都會導致整個鏈失敗
  • 效能考慮 :長管道鏈可能影響效能

3. 命令替換

使用命令替換將一個命令的輸出作為另一個命令的引數。

示例:使用命令替换

bash


# 将命令输出作为参数
claude -p "审查 $(git diff --name-only) 中的文件"

這個命令的工作流程:

  1. git diff --name-only:獲取修改的檔案列表
  2. $():將輸出作為引數傳遞
  3. claude -p "审查 ... 中的文件":審查這些檔案

示例:动态参数

bash


# 根据当前分支动态生成参数
claude -p "为 $(git branch --show-current) 分支生成提交信息"

4. 条件执行

根據前一個命令的執行結果決定是否執行後續命令。

示例:使用 && 操作符

bash


# 前一个命令成功后才执行后一个命令
claude -p "生成测试代码" && claude -p "运行测试"

這個命令的工作流程:

  1. 執行 claude -p "生成测试代码"
  2. 如果成功,執行 claude -p "运行测试"
  3. 如果失敗,不執行後續命令

示例:使用 || 操作符

bash


# 前一个命令失败时才执行后一个命令
claude -p "尝试快速修复" || claude -p "使用备用方案"

這個命令的工作流程:

  1. 執行 claude -p "尝试快速修复"
  2. 如果失敗,執行 claude -p "使用备用方案"
  3. 如果成功,不執行後續命令

示例:使用 ; 操作符

bash


# 无论前一个命令是否成功都执行后一个命令
claude -p "生成代码" ; claude -p "生成文档"

5. 后台执行

將命令放在後臺執行,不阻塞當前終端。

示例:后台执行

bash


# 在后台执行长时间运行的任务
claude -p "分析大型项目" &

這個命令的工作流程:

  1. &:將命令放在後臺執行
  2. 命令在後臺執行,終端可以繼續使用

示例:并行执行多个任务

bash


# 并行执行多个独立的任务
claude -p "分析前端代码" &
claude -p "分析后端代码" &
claude -p "分析测试代码" &
wait

這個命令的工作流程:

  1. 同時啟動三個獨立的任務
  2. 每個任務在後臺執行
  3. 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

這個命令的工作流程:

  1. 遍歷所有 .py 檔案
  2. 對每個檔案執行最佳化任務
  3. 將結果儲存到 .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 強大功能的關鍵。透過掌握基本的組合模式(標誌組合、管道組合、命令替換、條件執行、後臺執行)和高階組合模式(函式封裝、迴圈處理、陣列處理),您可以建立強大、高效的自動化工作流。

記住以下要點:

  1. 從簡單開始 :先掌握基本的組合模式
  2. 逐步複雜 :在掌握基礎後嘗試高階模式
  3. 注重實踐 :透過實際專案練習命令組合
  4. 持續最佳化 :不斷改進和最佳化您的命令組合

在接下來的章節中,我們將學習如何將這些命令組合應用到指令碼編寫、CI/CD 整合、批處理操作和實際工作流中。

基于 MIT 许可发布 | 永久导航