# Shell Command

> 【Shell 命令】自然语言描述转 shell/bash 命令。触发时机：用户说"帮我查一下"、"找文件"、"看端口"、"杀进程"、"生成 shell 命令"时。

- Skill: `afine907/shell-command` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add afine907/shell-command`
- Raw SKILL.md: https://api.skillmd.com/api/skills/afine907/shell-command/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: afine907 (https://skillmd.com/u/afine907)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/afine907/shell-command

---


# Shell Command — 命令翻译 Agent

自然语言描述 → shell 命令（+ 安全提示 + 危险操作确认）。


## Goal

将自然语言描述转换为 shell/bash 命令。纯翻译工作，不涉及复杂逻辑


## Trigger

- 用户说"帮我查一下"、"找文件"、"看端口"、"杀进程"、"磁盘空间"
- 用户要求"生成 shell 命令"、"linux 命令"
- 用户描述操作目标但不知道具体命令


## 工作流程

```
自然语言 → 匹配命令模式 → 安全检查 → 输出命令 + 安全等级
```

## Step 1: 识别操作类型

将用户描述映射到操作类型：

| 操作类型 | 典型描述 |
|----------|----------|
| **文件查找** | "找大文件"、"查目录大小"、"找 py 文件" |
| **进程管理** | "看进程"、"杀进程"、"查端口" |
| **网络诊断** | "ping"、"查连接"、"DNS 查询" |
| **磁盘/内存** | "磁盘空间"、"内存使用"、"看磁盘" |
| **文本处理** | "提取第 3 列"、"排序"、"去重"、"统计" |
| **日志查看** | "看日志"、"实时 tail"、"搜错误" |
| **权限管理** | "改权限"、"改所有者" |
| **Docker** | "看容器"、"看镜像"、"清理" |
| **Git** | "看状态"、"看 diff"、"查提交历史" |
| **包管理** | "装包"、"更新"、"卸载" |

具体命令参考 [references/common-patterns.md](references/common-patterns.md)。

### 复合请求处理

用户描述可能涉及多个操作类型（如"查 8080 端口占用并杀掉进程"）或先查后改：

1. 涉及 **只读 + 修改** 的组合：分两步输出，先只读查询，标注 "请确认后再执行修改命令"
2. 涉及 **多个独立操作**：按执行顺序列出多条命令，每条独立做安全检查
3. 跨类型匹配时，以 **最具体的操作** 为主类型，其余辅助

### 不匹配回退

用户描述无法映射到已知操作类型时：

1. 尝试提取 `<动词> + <目标>` 结构输出最简命令
2. 如果提取失败，列出 2-3 个相近类型让用户选择
3. 如果完全无法匹配，提示用户提供更具体的描述

## Step 2: 安全检查

### 修饰规则

以下修饰符影响安全等级：

| 修饰符 | 影响 | 说明 |
|--------|------|------|
| 命令前带 `sudo` | 安全等级升一级（🟢→🟡，🟡→🔴） | `sudo` 放大破坏力 |
| `-rf`、`--force` 等强制标志 | 同命令下更危险等级 | 强制标志跳过确认 |

### 安全等级决策表

| 操作特征 | 安全等级 | 行为 |
|----------|----------|------|
| 🟢 **只读操作**：查、看、统计、搜索 | 安全 | 直接输出命令，建议加 `--dry-run`（如有） |
| 🟡 **修改操作**：创建、删除、修改、停止、重启 | 需确认 | 输出命令 + 标注 "⚠️ 此操作会修改系统状态，请确认后执行" |
| 🔴 **不可逆操作**：格式化、擦除、清空防火墙规则 | 拒绝 | 拒绝生成，说明原因 |

### 具体命令判断表

| 命令 | 默认等级 | 例外/升级条件 |
|------|----------|---------------|
| `rm` | 🟡 需确认 | 含 `/`、`/*`、`~`、`.` 等通配目标 → 🔴 拒绝 |
| `rm -rf` | 🟡 需确认 | 目标为 `/`、`/*`、`~`、`.` → 🔴 拒绝 |
| `kill` | 🟡 需确认 | `kill -9` 需额外确认 |
| `dd` | 🟡 需确认 | `of=` 指向磁盘设备（`/dev/sd`、`/dev/nvme`）→ 🔴 拒绝 |
| `mkfs`, `fdisk`, `parted` | 🔴 拒绝 | — |
| `reboot`, `shutdown`, `poweroff` | 🟡 需确认 | — |
| `chmod` | 🟢 安全 | `chmod 777` → 🟡；`chmod -R 777 /` 等系统路径 → 🔴 |
| `chown` | 🟢 安全 | 修改系统文件所有者 → 🟡 |
| `iptables -F`, `iptables -X`, `ufw disable` | 🔴 拒绝 | 清空/禁用防火墙规则可能导致连接断开 |
| `crontab -r` | 🔴 拒绝 | 删除所有定时任务 |
| `systemctl stop` 网络服务 | 🟡 需确认 | `systemctl stop network`/`NetworkManager` → 🔴 |
| `systemctl disable` 关键服务 | 🟡 需确认 | `systemctl disable sshd` 等需额外确认 |
| `git push --force`, `git push --force-with-lease` | 🟡 需确认 | 覆盖远程历史 |
| `git reset --hard`, `git clean -fd` | 🟡 需确认 | 丢弃本地更改 |
| `>` 重定向覆盖 | 🟡 需确认 | `>>` 追加安全 |
| `DROP TABLE`, `DELETE FROM`, `TRUNCATE` | 🟡 需确认 | — |
| 其余所有 | 🟢 安全 | — |

### 输出模板中的 dry-run 建议规则

- 命令支持 `--dry-run` 或 `--check` 选项 → 建议使用
- 不支持 dry-run 的命令（`kill`, `rm`, `chmod` 等）→ 建议用 `echo` 模拟展示效果（如 `echo rm file1 file2`）

## Step 3: 输出模板

````markdown
```bash
<最终命令>
```

**安全等级**: 🟢 安全 / 🟡 需确认 / 🔴 拒绝
**说明**: <一句话解释命令作用>
**建议**: <参数说明、安全建议、dry-run 提示>
````

### 输出示例

```
用户：找 /var/log 下最大的 3 个文件

```bash
du -ah /var/log | sort -rh | head -3
```

**安全等级**: 🟢 安全
**说明**: 递归计算 /var/log 下所有文件大小，排序后取前 3
**建议**: 文件量大时可加 `--max-depth=1` 只看一层
```

## 参考资料

- 常见命令对照表: [references/common-patterns.md](references/common-patterns.md)

