Skip to content

Gemini CLI 让你无需离开对话界面就能运行 Shell 命令。用 ! 前缀直接执行命令,输出结果会自动进入 AI 上下文供后续分析;! 加回车进入 Shell Mode 连续输入;对于高风险操作,启用 --sandbox 在 Docker 容器内隔离运行。本页是 Shell 命令集成的完整操作指南。

执行 Shell 命令

在 Gemini CLI 中,你可以直接运行 Shell 命令,让 AI 读取结果并继续任务——完整的"跑测试→分析报错→修复代码→再跑测试"循环可以完全自动化。

前置条件

  • Gemini CLI 已安装并完成认证,参见 安装指南
  • 熟悉你系统的 Shell(Bash、Zsh、PowerShell 等)

! 前缀:直接运行命令

不需要问 AI,自己直接执行命令:

!ls -la

命令立即执行,输出打印到终端。Gemini CLI 同时把命令和输出记入当前会话上下文,AI 可以在后续 Prompt 中引用这些内容(超大输出会被截断)。

Shell Mode:连续输入 Shell 命令

要执行一系列手动操作时,进入 Shell Mode 效率更高:

  1. 输入 ! 然后按 Enter
  2. 现在所有输入都直接发给 Shell
  3. Esc 或输入 exit 退出 Shell Mode

自动化复杂任务

场景:跑测试并修复失败

让 AI 全程处理测试失败:

Prompt:

运行单元测试,如果有失败的测试,分析报错并修复代码。

工作流程:

  1. Gemini 调用 run_shell_command('npm test')
  2. 出现确认提示:Allow command 'npm test'? [y/N]
  3. y 确认
  4. 测试运行,如果有失败,AI 读取报错输出
  5. AI 用 read_file 查看出错的文件
  6. AI 用 replace 修复 Bug
  7. AI 再次运行 npm test 验证修复结果

这个闭环让 AI 能独立工作,直到测试全部通过。

管理后台进程

需要启动开发服务器或文件监听这类长期运行的任务:

Prompt:

在后台启动 React 开发服务器。

AI 会运行命令(如 npm run dev)并以后台进程方式运行。

查看活跃后台进程

/shells

这会打开仪表盘,显示所有后台进程,可以查看日志或终止失控进程。

处理交互式命令

对于 git add -p 或需要交互输入的命令,Gemini CLI 会尝试将输出流式传给你。但对于高度交互的工具(如 vimtop),建议在单独的终端窗口里运行,或用 ! 前缀直接执行。

安全机制

让 AI 访问 Shell 能力很强大,但也有风险。Gemini CLI 内置多层安全防护:

确认提示

默认情况下,每一条 AI 请求执行的 Shell 命令都需要你明确确认:

选项效果
Allow once仅执行这一次
Allow always本次会话中信任该命令,不再询问
Deny拒绝执行,停止 AI

Sandboxing:Docker 隔离执行

对于不可信代码或高风险操作,强烈建议启用 Sandboxing,所有 Shell 命令都在安全的 Docker 容器内执行:

bash
gemini --sandbox

详见 Sandbox 沙箱模式

下一步

  • 深入了解沙箱配置:Sandboxing 文档
  • 查看 Shell 工具的完整配置选项(超时、工作目录等)
  • 结合 任务规划教程 了解 Shell 命令在大型工作流中的作用

常见问题

Q: ! 前缀执行的命令和 AI 调用的命令有什么区别?

A: ! 命令是你手动执行,不需要 AI 确认,直接运行。AI 调用的命令(run_shell_command)会出现确认提示,你审批后才执行。两种方式的输出都会被记入会话上下文。

Q: 如何防止 AI 执行危险的 Shell 命令?

A: 有两种办法:1. 默认模式下每条命令都需要手动确认,仔细看清楚再按 y;2. 启用 --sandbox 在 Docker 容器内运行,容器内的操作不会影响宿主机。

Q: Shell Mode 和普通模式下的上下文有区别吗?

A: 没有区别。Shell Mode 只是让你更方便地连续输入 Shell 命令,所有命令和输出仍然被记入同一个会话上下文,AI 可以在你退出 Shell Mode 后引用这些内容。