以下是 `shell2http` 项目的详细中文总结：

---

### **项目概述**
`shell2http` 是一个用 Go 编写的轻量级 HTTP 服务器，核心功能是通过 HTTP 请求触发执行预定义的 Shell 命令，并将结果返回给客户端。它适用于开发调试、原型设计、远程控制等场景，支持快速将 Shell 脚本暴露为 HTTP 接口。

---

### **核心功能**
1. **简单易用**  
   - 通过命令行参数直接绑定 URL 路径与 Shell 命令，例如：  
     ```shell
     shell2http /date "date" /ps "ps aux"
     ```
   - 支持 GET、POST 等多种 HTTP 方法（通过 `METHOD:/path` 语法指定）。

2. **请求处理模式**  
   - **普通模式**：直接执行命令，返回标准输出（stdout）。
   - **表单模式（`-form`）**：解析查询参数和上传文件，生成环境变量供脚本使用：
     - `$v_参数名`：来自 URL 查询参数的值（如 `?id=123` → `$v_id`）。
     - `$filepath_字段名`：上传文件的临时路径。
     - `$filename_字段名`：上传文件的原始文件名。
   - **CGI 模式（`-cgi`）**：模拟 CGI 环境，设置 HTTP 请求相关环境变量，处理请求体数据。

3. **安全与认证**  
   - **Basic 认证**：通过 `-basic-auth` 设置用户名密码，支持多用户。
   - **SSL/TLS**：使用 `-cert` 和 `-key` 选项启动 HTTPS 服务器。
   - **表单字段过滤**：通过 `-form-check` 限制参数名格式（如仅允许数字）。

4. **高级特性**  
   - **缓存**：`-cache=N` 缓存命令输出 N 秒。
   - **超时控制**：`-timeout` 设置命令执行超时时间。
   - **错误处理**：`-500` 在命令非零退出时返回 500 错误；`-show-errors` 显示错误输出。
   - **环境变量**：支持导出特定或全部环境变量（`-export-vars`/`-export-all-vars`）。

5. **日志与调试**  
   - 自定义日志文件（`-log`）、禁用时间戳（`-no-log-timestamp`）。

---

### **安装方式**
1. **MacOS**  
   ```shell
   brew install msoap/tools/shell2http
   ```
2. **Docker**  
   ```shell
   docker pull msoap/shell2http
   docker run -p 8080:8080 msoap/shell2http /date "date"
   ```
   - 使用 `--init` 防止僵尸进程。

3. **Snap（Linux）**  
   ```shell
   sudo snap install shell2http
   ```
   - 注意沙箱环境可能导致路径问题。

4. **源码编译**  
   ```shell
   go install github.com/msoap/shell2http@latest
   ```

5. **预编译二进制**  
   从 [GitHub Releases](https://github.com/msoap/shell2http/releases) 下载（支持 Windows、Linux、MacOS、树莓派）。

---

### **使用示例**
1. **基础命令**  
   ```shell
   shell2http /top "top -l 1 | head -10" /date "date"
   ```
   - 访问 `http://localhost:8080/date` 返回当前时间。

2. **环境变量**  
   ```shell
   shell2http -export-vars=GOPATH /gopath 'echo $GOPATH'
   ```

3. **表单处理**  
   ```shell
   shell2http -form /upload 'cp $filepath_file1 ./uploads/$filename_file1'
   ```
   - 上传文件并保存到 `uploads` 目录。

4. **CGI 模式**  
   ```shell
   shell2http -cgi /cgi-script './script.sh'
   ```
   - 脚本可读取请求头、请求体，设置响应头。

5. **HTTPS 服务器**  
   ```shell
   shell2http -cert=cert.pem -key=key.pem /date "date"
   ```
   - 生成自签名证书：  
     ```shell
     go run $(go env GOROOT)/src/crypto/tls/generate_cert.go -host localhost
     ```

---

### **应用场景**
- **系统监控**：暴露 `top`、`ps`、`df` 等命令的 HTTP 接口。
- **文件操作**：上传/下载文件、目录列表。
- **远程控制**：调节音量、控制媒体播放器（如 MacOS 的 Vox.app）。
- **API 模拟**：返回静态 JSON 或动态生成数据。
- **调试工具**：模拟慢速响应、记录请求日志。

---

### **相关工具**
- **shell2telegram**：将 Shell 命令绑定到 Telegram 机器人。
- **websocketd**：将 STDIN/STDOUT 程序转换为 WebSocket 服务。
- **devd**：本地开发的轻量级 HTTP 守护进程。

---

### **注意事项**
- **安全性**：避免在生产环境暴露敏感命令，使用防火墙和认证机制。
- **性能**：默认多线程处理请求，可通过 `-one-thread` 限制为单线程。
- **路径问题**：Docker 或 Snap 环境需注意命令的可访问性。

通过灵活配置，`shell2http` 可快速搭建功能丰富的 HTTP 服务，适合开发者和运维人员简化工作流程。