别再死记硬背!Linux 调试必备:curl 常用参数 & 实战模板一键收藏
🔥 别再死记硬背!Linux 调试必备:curl 常用参数 & 实战模板一键收藏
在日常开发、运维或接口调试中,curl 绝对是 Linux 环境下最趁手的“瑞士军刀”。
但它的参数实在太多,平时用得少,真到排查问题时总是临时查文档,既打断思路又耽误时间。
今天我把日常最高频的参数、实战模板和避坑指南整理成一篇“开箱即用”的速查手册。建议直接收藏,下次调试直接复制粘贴,效率翻倍!👇
📦 一、核心参数速查(按场景分类)
抛弃枯燥的字母表,我们按**“你想做什么”**来分类,一眼就能找到对应参数:
🔹 控制请求方式 & 数据
-X POST/PUT/DELETE:指定请求方法(GET 可省略)-d "key=value":发送表单数据,默认自动转为 POST--data-binary:发送二进制数据(不处理换行符)-G:把-d的数据拼成 URL 查询参数(用于 GET)-d @data.json:强烈推荐,从文件读取请求体,彻底避开命令行转义地狱
🔹 请求头 & 身份认证
-H "Content-Type: application/json":自定义请求头-u user:pass:自动处理 Basic 认证-A "Mozilla/5.0...":伪装 User-Agent-b "token=abc"/-c cookies.txt:发送/保存 Cookie
🔹 响应控制 & 下载
-v:打印完整通信过程(握手、请求头、响应头、Body)-sS:静默模式+保留错误提示(脚本最安全组合)-I:仅获取响应头(HEAD 请求)-o file.zip/-O:保存到指定文件名 / 按远程文件名保存
🔹 网络 & 安全
-L:自动跟随 3xx 重定向(API 调试必加)-k:跳过 HTTPS 证书验证(测试环境常用)--connect-timeout 5/--max-time 10:连接超时 & 总超时(秒)-x http://127.0.0.1:7890:设置代理(配合抓包工具)
💡 二、6 个高频实战模板(直接复制)
1️⃣ GET 请求(带查询参数)
1 | # 参数少直接拼 URL |
2️⃣ POST JSON 请求(接口调试最常用)
1 | # 传统写法(注意用单引号,防止 Shell 展开 $ 或 `) |
3️⃣ 携带 Bearer Token + 仅看状态码
1 | # 适合写自动化脚本或快速验活 |
4️⃣ 下载文件 + 自动重定向 + 静默
1 | # -s 静默,-S 显示错误,-L 跟随重定向,-o 保存 |
5️⃣ 模拟表单上传文件(multipart/form-data)
1 | curl -X POST https://api.example.com/upload \ |
6️⃣ 完整抓包调试(排查 4xx/5xx 第一步)
1 | curl -v https://api.example.com/health |
🛡️ 三、避坑指南 & 高阶技巧
⚠️ 默认不跟随重定向
测试 301/302 接口务必加 -L,否则只会拿到一个 Location 头,拿不到最终数据。
⚠️ JSON 请求两大坑
- 必须显式加
-H "Content-Type: application/json",否则多数后端会按表单解析导致 400。 - 命令行 JSON 一定用单引号包裹!双引号里的
$var会被 Shell 提前替换。
🔧 现代 curl 快捷语法(v7.82+ 已普及)
1 | curl --json '{"key":"value"}' https://api.example.com |
🔧 代理调试抓包
加 -x http://127.0.0.1:8080,配合 Charles / mitmproxy / Fiddler,可实时查看请求原文。
🔧 脚本安全组合
生产脚本中永远使用 curl -sS ...,既干净又能通过 $? 捕获错误退出码。
📊 四、接口性能监控(-w 参数)
想快速评估接口耗时或写监控脚本?-w(write-out)是神器:
1 | curl -s -w "\nHTTP_CODE: %{http_code}\nTTFB: %{time_starttransfer}s\nTOTAL: %{time_total}s\n" \ |
📌 常用监控变量速查
| 变量 | 含义 |
|---|---|
%{http_code} |
HTTP 状态码 |
%{time_total} |
总耗时(秒) |
%{time_connect} |
TCP 建连耗时 |
%{time_starttransfer} |
首字节返回时间(TTFB) |
%{size_download} |
响应体大小(字节) |
%{url_effective} |
最终请求 URL(含重定向后) |
💬 结语
curl 的参数虽多,但日常开发真正高频使用的不到 10%。掌握上面这些模板和避坑点,90% 的接口调试、网络排查、脚本编写都能游刃有余。
📌 建议收藏:下次遇到新接口,直接翻这篇复制模板,省下查文档的时间去喝杯咖啡☕️。
你在实际工作中最常用 curl 做什么场景?或者遇到过什么奇葩的报错?欢迎在评论区留言,我会挑几个典型问题补充到下期实战笔记中。
如果这篇对你有帮助,记得 点赞 + 转发 给团队小伙伴,一起告别命令行焦虑!🚀
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Nosaw博客!
评论




