claude -c -p 命令
结合会话恢复和打印模式执行一次性查询
概述
claude -c -p "query" 命令结合了会话恢复和打印模式,允许您在继续最近对话的同时执行一次性查询,适合脚本和自动化场景。
命令语法
claude -c -p "query" [选项]功能描述
这个命令结合了两个功能:
-c(--continue):加载最近的对话会话-p(--print):通过 SDK 执行查询,然后退出
这允许您:
- 在之前对话的上下文中执行查询
- 获取查询结果而不进入交互模式
- 保持对话的连续性
使用示例
基本用法
claude -c -p "检查类型错误"代码审查
claude -c -p "审查最近的代码变更"测试结果分析
claude -c -p "分析测试失败的原因"结合输出格式
claude -c -p "总结当前进度" --output-format json指定模型
claude -c -p "优化性能" --model claude-4-opus使用场景
CI/CD 集成
# 在 CI/CD 流程中继续之前的对话
claude -c -p "运行测试并分析结果" --output-format json定期检查
# 定期检查项目状态
claude -c -p "检查代码质量" --output-format json自动化报告
# 生成进度报告
claude -c -p "生成进度报告" --output-format json > report.json批量任务
# 执行多个相关任务
claude -c -p "任务1" --output-format json > result1.json
claude -c -p "任务2" --output-format json > result2.json
claude -c -p "任务3" --output-format json > result3.json高级用法
结合多个选项
claude -c -p "任务" --model opus --output-format json --verbose错误处理
#!/bin/bash
# 执行查询并处理错误
result=$(claude -c -p "任务" --output-format json 2>&1)
if [ $? -ne 0 ]; then
echo "错误: $result"
exit 1
fi
echo "$result" | jq '.result'超时控制
# 设置超时
timeout 60 claude -c -p "长时间任务"实际应用示例
自动化工作流
#!/bin/bash
# 每天自动检查项目状态
echo "=== 每日检查 ==="
# 检查代码质量
claude -c -p "检查代码质量" --output-format json > quality.json
# 检查测试状态
claude -c -p "检查测试状态" --output-format json > tests.json
# 生成报告
claude -c -p "生成每日报告" --output-format json > report.json
echo "检查完成"持续集成
# GitHub Actions 示例
name: Daily Check
on:
schedule:
- cron: '0 9 * * *'
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Check Code Quality
run: |
result=$(claude -c -p "检查代码质量" --output-format json)
echo "$result" | jq '.issues' > issues.json与其他命令的对比
| 命令 | 加载会话 | 进入 REPL | 输出格式 | 适用场景 |
|---|---|---|---|---|
claude -c | 是 | 是 | 交互式 | 继续交互式工作 |
claude -c -p | 是 | 否 | 可指定 | 脚本和自动化 |
claude -p | 否 | 否 | 可指定 | 独立查询 |
claude -r "id" -p | 指定会话 | 否 | 可指定 | 精确控制会话 |
上下文保持
对话历史
-c 标志会加载完整的对话历史,包括:
- 之前的查询和响应
- 代码生成和修改
- 文件访问记录
- 工具调用历史
上下文限制
- 上下文长度:对话历史有长度限制,过长的历史可能被截断
- 上下文相关性:如果查询与之前对话不相关,上下文可能没有帮助
- 上下文更新:新的查询会更新对话上下文
常见问题
| 问题 | 答案 |
|---|---|
| 查询会修改会话吗? | 是的,查询会更新对话上下文 |
| 可以使用其他会话吗? | 不可以,-c 只加载最近的会话,需使用 -r |
| 上下文会保留多久? | 保留在会话文件中,直到被删除或覆盖 |
| 查询失败会影响会话吗? | 不会修改会话,但会记录错误信息 |
注意事项
- 会话依赖:需要当前目录中有可用的会话
- 上下文相关:查询应该与之前对话相关
- 输出格式:建议使用
--output-format json便于脚本解析 - 会话更新:查询会更新对话上下文,影响后续的
-c调用