{"msg":"操作成功","code":200,"data":{"createBy":"admin","createTime":"2024-09-01 11:31:32","updateBy":"admin","updateTime":"2024-09-01 11:31:32","remark":null,"id":87,"articleTitle":"每天一个Linux命令（十一）curl","articleUrl":"linux_curl","articleThumbnail":"https://www.asumimoe.com/imgfiles/20250301/b95d839fa195428cb42fc7f104f50b0d.png","articleFlag":"0","draftStatus":"1","reprintStatement":"0","articleSummary":"curl是 Linux/Unix 系统中用于传输数据的命令（Client URL），支持 HTTP、HTTPS、FTP、SFTP 等多种协议。它是网络调试、API 测试和数据下载中常用的工具之一。","articleContent":"`curl` 是 Linux/Unix 系统中用于**传输数据**的命令（Client URL），支持 HTTP、HTTPS、FTP、SFTP 等多种协议。它是网络调试、API 测试和数据下载中常用的工具之一。\n\n---\n\n## 语法\n\n```bash\ncurl [选项] [URL...]\n```\n\n---\n\n## 常用选项\n\n| 选项 | 说明                                  |\n| ---- | ------------------------------------- |\n| `-o` | 将输出保存到文件                      |\n| `-O` | 将输出保存到文件（文件名从 URL 提取） |\n| `-I` | 仅显示响应头                          |\n| `-L` | 自动跟随重定向                        |\n| `-v` | 显示详细请求和响应信息                |\n| `-X` | 指定请求方法（如 GET、POST）          |\n| `-H` | 添加请求头                            |\n| `-d` | 发送 POST 请求的数据                  |\n| `-F` | 发送表单数据（文件上传）              |\n| `-u` | 添加认证信息（用户名:密码）           |\n| `-k` | 忽略 SSL 证书验证                     |\n| `-s` | 静默模式（不显示进度和错误信息）      |\n| `-A` | 设置 User-Agent                       |\n| `-c` | 保存 Cookie 到文件                    |\n| `-b` | 从文件加载 Cookie                     |\n\n---\n\n## 使用示例\n\n### 1. 下载文件\n\n```bash\ncurl -O https://example.com/file.txt\n```\n\n输出：文件保存为 `file.txt`\n\n---\n\n### 2. 保存文件到指定路径\n\n```bash\ncurl -o output.txt https://example.com/file.txt\n```\n\n输出：文件保存为 `output.txt`\n\n---\n\n### 3. 显示响应头\n\n```bash\ncurl -I https://example.com\n```\n\n输出示例：\n\n```bash\nHTTP/2 200\nserver: nginx\ndate: Wed, 10 Jan 2024 15:30:45 GMT\ncontent-type: text/html\n```\n\n---\n\n### 4. 自动跟随重定向\n\n```bash\ncurl -L https://example.com/redirect\n```\n\n---\n\n### 5. 发送 GET 请求\n\n```bash\ncurl https://api.example.com/data\n```\n\n---\n\n### 6. 发送 POST 请求\n\n```bash\ncurl -X POST -d \"param1=value1&param2=value2\" https://api.example.com/submit\n```\n\n---\n\n### 7. 发送 JSON 数据\n\n```bash\ncurl -X POST -H \"Content-Type: application/json\" -d '{\"key\":\"value\"}' https://api.example.com/submit\n```\n\n---\n\n### 8. 上传文件\n\n```bash\ncurl -F \"file=@/path/to/file.txt\" https://example.com/upload\n```\n\n---\n\n### 9. 添加请求头\n\n```bash\ncurl -H \"Authorization: Bearer token\" https://api.example.com/data\n```\n\n---\n\n### 10. 使用认证\n\n```bash\ncurl -u username:password https://example.com\n```\n\n---\n\n### 11. 忽略 SSL 证书验证\n\n```bash\ncurl -k https://example.com\n```\n\n---\n\n### 12. 静默模式\n\n```bash\ncurl -s https://example.com\n```\n\n---\n\n### 13. 设置 User-Agent\n\n```bash\ncurl -A \"Mozilla/5.0\" https://example.com\n```\n\n---\n\n### 14. 保存 Cookie\n\n```bash\ncurl -c cookies.txt https://example.com\n```\n\n---\n\n### 15. 加载 Cookie\n\n```bash\ncurl -b cookies.txt https://example.com\n```\n\n---\n\n## 注意事项\n\n1. **协议支持**：`curl` 支持多种协议，但需确保系统已安装相关依赖\n2. **重定向**：默认不跟随重定向，需使用 `-L` 选项\n3. **SSL 验证**：生产环境中不建议使用 `-k` 忽略 SSL 验证\n4. **性能影响**：`-v` 选项会显著增加输出信息，可能影响性能\n\n---\n\n## 常见错误处理\n\n### 错误示例：URL 无效\n\n```bash\ncurl https://invalid.url\n# 输出：curl: (6) Could not resolve host: invalid.url\n```\n\n### 错误示例：认证失败\n\n```bash\ncurl -u user:wrongpass https://example.com\n# 输出：curl: (22) The requested URL returned error: 401 Unauthorized\n```\n\n---\n\n## 进阶技巧\n\n### 1. 下载多个文件\n\n```bash\ncurl -O https://example.com/file1.txt -O https://example.com/file2.txt\n```\n\n---\n\n### 2. 限速下载\n\n```bash\ncurl --limit-rate 100K -O https://example.com/largefile.zip\n```\n\n---\n\n### 3. 断点续传\n\n```bash\ncurl -C - -O https://example.com/largefile.zip\n```\n\n---\n\n### 4. 测试 API 响应时间\n\n```bash\ncurl -o /dev/null -s -w \"%{time_total}\\n\" https://api.example.com/data\n```\n\n---\n\n### 5. 显示请求和响应详细信息\n\n```bash\ncurl -v https://example.com\n```\n\n---\n\n### 6. 使用代理\n\n```bash\ncurl -x http://proxy.example.com:8080 https://example.com\n```\n\n---\n\n### 7. 保存响应头到文件\n\n```bash\ncurl -D headers.txt https://example.com\n```","categoryId":1,"viewCount":65,"categoryName":"Linux","author":"球接子","authorAvatar":null,"tagIds":[10],"tagNames":["Linux基础"]}}