⚡ 阶段二:Claude Code CLI 基础核心能力

入门必会 | 启动/退出/作用域/全局参数 | 纯新手友好

📑 本章目录
  1. 启动方式:默认、指定目录、后台、单次执行
  2. 基础生命周期:进入/退出/重启/会话冻结与恢复
  3. 作用域原理:项目目录读取、文件权限、工作树隔离
  4. 基础全局参数详解:--version、--help、--print、--worktree
  5. 新手规范:首次配置、安全权限、禁止操作
  6. 课后练习

2.1 启动方式

原理讲解

Claude Code CLI 有多种启动模式,每种模式适用于不同的使用场景:

1. 默认启动(交互模式)

# 在当前目录启动交互模式
claude

# 此时终端进入 Claude 交互界面
# 提示符变为:>
# 你可以输入自然语言指令
# 输入 /exit 或按 Ctrl+D 退出

交互界面说明

2. 指定项目目录启动

# 在指定目录启动
claude /path/to/your/project

# 等价于
cd /path/to/your/project && claude

# 示例:启动到 ~/my-web-app 项目
claude ~/my-web-app
📌 为什么推荐指定目录启动? Claude Code CLI 会将启动目录识别为项目根目录,它能读取该目录下的所有文件来理解项目结构。如果你在错误的目录启动,Claude 可能看不到你的代码文件。

3. 单次指令执行模式(--print / -p)

# === 单次执行,输出后退出(最常用) ===
claude --print -p "列出当前目录的文件"

# 等价简写
claude -p "列出当前目录的文件"

# === 管道传入内容 ===
echo "请分析这个 JSON:{\"name\":\"test\"}" | claude -p "解析这个 JSON"

# === 从文件传入 ===
cat error.log | claude -p "分析这些日志中的错误" > analysis.txt

# === 结合 bash 变量 ===
result=$(claude -p "生成一个随机的 Python 函数名")
echo "$result"

参数释义

4. 后台运行模式

# 在后台启动 Claude Code(使用 &)
claude --print -p "分析整个项目" &

# 使用 nohup 防止 SSH 断开时终止
nohup claude -p "分析 src/ 目录下的所有文件" > analysis.txt 2>&1 &

# 使用 screen / tmux(推荐)
screen -S claude-session
claude
# 按 Ctrl+A, D 分离会话
# screen -r claude-session 重新连接
💡 推荐:在远程服务器上使用 tmuxscreen,这样即使 SSH 断开,Claude 任务也不会中断。

5. 管道模式(接收 stdin)

# === 管道传入文件内容 ===
cat app.py | claude -p "review 这段代码,找出潜在 bug"

# === 管道传入 git diff ===
git diff HEAD~1 | claude -p "总结这些改动,生成 commit message"

# === 管道传入命令输出 ===
ps aux | claude -p "分析哪些进程占用内存最高"

# === 管道传入 + 指定输出格式 ===
cat data.json | claude -p "提取所有 email 地址,输出为 JSON 数组"

2.2 基础生命周期

生命周期全景图

启动 claude
加载项目上下文
进入交互循环
输入指令
AI 响应
/exit 退出

1. 进入 CLI 交互页

# 启动后你会看到类似以下界面:
# ┌──────────────────────────────────────────┐
# │  ✨ Claude Code v1.x.x                    │
# │  📁 Project: /home/user/my-project        │
# │  🔧 Model: claude-sonnet-4-6              │
# │                                           │
# │  >                                         │
# └──────────────────────────────────────────┘

# > 符号是你的输入提示符
# 直接输入自然语言指令即可

2. 退出 CLI

# 方法一:斜杠命令退出(最规范)
/exit

# 方法二:键盘快捷键
Ctrl+D    # 发送 EOF 信号
Ctrl+C    # 发送中断信号(可能需要按两次)

# 方法三:输入 quit 或 exit
exit      # 在某些版本中有效
quit
⚠️ 注意:直接关闭终端窗口可能导致会话历史丢失。建议使用 /exit 正常退出。

3. 会话冻结与恢复

# === 会话自动保存 ===
# Claude Code CLI 会自动保存会话历史到 ~/.claude/history.jsonl
# 正常退出时,会话状态被保存
# 下次在同一目录启动时,可以选择恢复上次会话

# === 手动检查会话历史 ===
ls -la ~/.claude/
cat ~/.claude/history.jsonl | tail -5

# === 恢复上次会话 ===
# 在交互模式中,使用 /history 查看历史
# 使用 /continue 让 Claude 继续上次未完成的任务

4. 重新启动 Claude Code

# === 同目录重启(自动检测上次会话) ===
claude
# Claude 会提示:Found previous session. Resume? (y/n)

# === 全新会话(跳过恢复) ===
claude --new-session
# 或
claude --fresh

2.3 作用域原理

原理讲解

Claude Code CLI 的作用域(Scope)决定了它能"看到"哪些文件、执行哪些操作。理解作用域是高效使用 CLI 的前提。

1. 项目目录作用域

2. 文件读取权限

3. 工作树隔离(Worktree Isolation)

实操演示

# === 实验1:验证 Claude 能看到当前目录文件 ===
mkdir -p /tmp/claude-scope-test
cd /tmp/claude-scope-test
echo "print('hello')" > test.py
echo "const x = 1;" > test.js
echo "secret_key=abc123" > .env

claude -p "列出当前目录下所有文件"

# === 实验2:验证 Claude 能看到子目录 ===
mkdir subdir
echo "console.log('in subdir')" > subdir/app.js
claude -p "查看 subdir/ 目录的内容"

# === 实验3:验证权限限制 ===
echo "top-secret" > /tmp/secret.txt
chmod 000 /tmp/secret.txt
claude -p "读取 /tmp/secret.txt 的内容"
# 预期:权限不足报错

.gitignore 和 .claudeignore

# === .claudeignore 文件 ===
# 创建 .claudeignore 告诉 Claude 忽略某些文件
cat > .claudeignore << 'EOF'
node_modules/
dist/
build/
*.log
.env
EOF

# Claude 会尊重 .gitignore 和 .claudeignore
# 这可以减少上下文消耗,提高响应质量

2.4 基础全局参数详解

参数速查表

参数简写用途使用场景
--version-v查看版本号确认安装成功、排查版本兼容性
--help-h查看帮助信息查询可用参数和命令
--print-p非交互单次执行脚本化、CI/CD、管道操作
--worktree-隔离工作树模式安全审查、实验性修改
--model-指定模型切换不同的 Claude 模型
--no-color-禁用彩色输出日志文件输出、管道处理
--verbose-详细输出模式调试、查看内部执行过程
--continue-c继续上次会话恢复中断的工作

1. --version:查看版本

# 查看 Claude Code CLI 版本
claude --version
# 输出示例:1.0.37 (Claude Sonnet 4.6)

# 版本号用于:
# - 确认安装成功
# - 排查版本兼容问题
# - 向社区报告 bug 时提供版本信息

2. --help:帮助信息

# 查看完整帮助
claude --help

# 帮助信息包含:
# - 所有可用参数
# - 参数说明
# - 使用示例
# - 环境变量列表

3. --print / -p:单次执行模式(重中之重)

# === 基础用法:单次问答 ===
claude -p "什么是闭包?用 JavaScript 举例"

# === 结合管道:分析文件 ===
cat package.json | claude -p "列出所有依赖及其版本"

# === 输出重定向:保存结果到文件 ===
claude -p "生成一个 Express.js 项目的基础目录结构" > project-structure.txt

# === 结合 shell 变量 ===
commit_msg=$(git diff --staged | claude -p "生成 commit message")
echo "$commit_msg"

# === 指定模型 ===
claude -p "解释量子计算" --model claude-opus-4-8

# === 无颜色输出(适合管道) ===
claude -p "生成 JSON" --no-color | jq '.'

4. --worktree:工作树隔离模式

# === 在隔离工作树中启动 Claude ===
claude --worktree

# 适用场景:
# 1. 实验性修改:不想影响原始代码
# 2. 代码审查:安全地检查代码
# 3. 临时探索:尝试不同的实现方案

# 工作树原理:
# - 创建一个临时的 git worktree
# - 所有修改都在隔离环境中
# - 退出时会提示是否保留修改

5. --model:指定模型

# === 查看可用模型 ===
claude --help | grep -A 20 "model"

# === 指定特定模型 ===
claude -p "解释这段代码" --model claude-sonnet-4-6
claude -p "复杂分析任务" --model claude-opus-4-8
claude -p "快速问答" --model claude-haiku-4-5-20251001

# 模型选择建议:
# - haiku:最快最便宜,适合简单任务
# - sonnet:平衡,适合日常开发(默认)
# - opus:最强,适合复杂分析和重构

6. --verbose:调试模式

# 开启详细输出,查看内部执行过程
claude -p "hello" --verbose

# 适用于:
# - 调试工具调用问题
# - 查看 token 消耗
# - 理解 Claude 的决策过程

2.5 新手规范

首次使用配置清单

# === 1. 确认版本和登录状态 ===
claude --version
claude whoami

# === 2. 创建测试项目,验证基本功能 ===
mkdir ~/claude-test && cd ~/claude-test
echo '{"name": "test"}' > package.json
claude -p "读取 package.json 并告诉我项目名"

# === 3. 了解配置目录 ===
ls -la ~/.claude/
# config.json      - 用户配置
# credentials.json - 认证凭证(勿手动修改)
# history.jsonl    - 会话历史

# === 4. 查看当前配置 ===
cat ~/.claude/config.json

安全权限配置

Claude Code CLI 在执行某些操作前会请求权限。你可以在 ~/.claude/settings.json 中预设权限策略。

# === 查看当前权限配置 ===
cat ~/.claude/settings.json 2>/dev/null || echo "尚未创建 settings.json"

# === 创建基础安全配置 ===
cat > ~/.claude/settings.json << 'EOF'
{
  "permissions": {
    "allow": [
      "Read(/home/**)",
      "Bash(git:status,git:diff,git:log)",
      "Bash(npm:test,node:*)",
      "Bash(ls:*,cat:*,find:*,grep:*)"
    ],
    "deny": [
      "Bash(rm:*,sudo:*,chmod:*)",
      "Bash(curl:*,wget:*)",
      "Write(**)",
      "Edit(**)"
    ]
  }
}
EOF
🔴 禁止的误操作(新手必读)

推荐目录结构

# === 建议的项目目录结构 ===
my-project/
├── .claudeignore    # Claude 忽略规则
├── .gitignore       # Git 忽略规则
├── src/             # 源代码
├── tests/           # 测试文件
├── docs/            # 文档
├── README.md        # 项目说明
└── CLAUDE.md        # Claude 项目上下文(可选)

2.6 课后练习

  1. 启动模式练习:分别用交互模式、-p 模式、管道模式启动 Claude,体验差异
  2. 作用域实验:在不同目录启动 Claude,观察它能看到哪些文件
  3. 参数组合:使用 --model 切换不同模型,对比回答质量与速度
  4. 管道实战:用 git log | claude -p 生成一份项目变更摘要
  5. 配置练习:创建 settings.json,设置文件读写权限策略
  6. 工作树隔离:在 --worktree 模式下修改文件,理解隔离机制
  7. 会话恢复:正常退出后在同一目录重新启动,观察会话恢复提示