Appearance
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 效率更高:
- 输入
!然后按 Enter - 现在所有输入都直接发给 Shell
- 按 Esc 或输入
exit退出 Shell Mode
自动化复杂任务
场景:跑测试并修复失败
让 AI 全程处理测试失败:
Prompt:
运行单元测试,如果有失败的测试,分析报错并修复代码。工作流程:
- Gemini 调用
run_shell_command('npm test') - 出现确认提示:
Allow command 'npm test'? [y/N] - 按
y确认 - 测试运行,如果有失败,AI 读取报错输出
- AI 用
read_file查看出错的文件 - AI 用
replace修复 Bug - AI 再次运行
npm test验证修复结果
这个闭环让 AI 能独立工作,直到测试全部通过。
管理后台进程
需要启动开发服务器或文件监听这类长期运行的任务:
Prompt:
在后台启动 React 开发服务器。AI 会运行命令(如 npm run dev)并以后台进程方式运行。
查看活跃后台进程
/shells这会打开仪表盘,显示所有后台进程,可以查看日志或终止失控进程。
处理交互式命令
对于 git add -p 或需要交互输入的命令,Gemini CLI 会尝试将输出流式传给你。但对于高度交互的工具(如 vim、top),建议在单独的终端窗口里运行,或用 ! 前缀直接执行。
安全机制
让 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 后引用这些内容。