🐧 Linux curl 命令详解
🐧 Linux curl 命令详解
🎯 学习目标
- 掌握
curl命令的基本结构与常用参数。 - 熟悉使用
curl进行 HTTP/HTTPS 请求、文件下载、上传等操作。 - 能够结合
-X,-d,-H等选项进行 RESTful API 测试。 - 了解
curl的高级功能如 cookies 管理、SSL/TLS 设置及输出重定向。
⚡ 核心重点(知识点提炼)
| 功能 | 命令 | 说明 |
|---|---|---|
| 发送GET请求 | curl [URL] |
获取网页内容或API响应 |
| 发送POST请求 | curl -X POST -d "param1=value1¶m2=value2" [URL] |
提交表单数据 |
| 文件下载 | curl -O [URL] |
下载文件并保存为原名 |
| 文件上传 | curl -F "file=@filename" [URL] |
使用 multipart/form-data 方式上传文件 |
| 设置头部信息 | curl -H "Content-Type: application/json" |
自定义HTTP头 |
| 显示响应头 | curl -I [URL] |
只显示HTTP响应头 |
📚 详细讲解
🧩 一、基本语法格式
curl [options] [URL]
- OPTIONS:
-X:指定请求方法(GET, POST, PUT, DELETE 等)-d:发送的数据(用于 POST/PUT 请求),格式可以是键值对或 JSON-H:添加自定义的 HTTP 头部-o:将输出保存到文件,保留原始文件名-O:将输出保存到文件,但使用远程文件名-L:跟随重定向-u:提供用户名和密码(用于基本认证)-v:显示详细的请求和响应过程-i:在输出中包含 HTTP 响应头-I:仅获取 HTTP 响应头-F:模拟表单提交,支持文件上传-k:忽略 SSL 证书验证(不推荐用于生产环境)-b/-c:读取/写入 cookie 文件
🔍 二、发送 GET 请求
1. 获取网页内容
最简单的用法就是直接访问一个 URL:
curl http://example.com
这会打印出该网页的内容到标准输出。
2. 仅获取响应头
如果你只关心服务器返回的 HTTP 响应头,可以使用 -I 选项:
curl -I http://example.com
输出示例:
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 24 Jun 2025 00:00:00 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 612
Connection: keep-alive
🛠 三、发送 POST 请求
要向服务器发送数据,通常需要使用 POST 方法。比如提交表单数据:
curl -X POST -d "name=JohnDoe&email=johndoe@example.com" https://api.example.com/register
对于更复杂的场景,如发送 JSON 数据,你需要设置相应的 Content-Type 头部:
curl -X POST -H "Content-Type: application/json" -d '{"name":"JohnDoe","email":"johndoe@example.com"}' https://api.example.com/register
🕵️♂️ 四、文件下载与上传
1. 文件下载
下载文件时,如果希望保留原文件名,可以使用 -O:
curl -O http://example.com/path/to/file.zip
若想指定下载后的文件名,则使用 -o:
curl -o myfile.zip http://example.com/path/to/file.zip
2. 文件上传
使用 -F 参数可以轻松实现文件上传:
curl -F "file=@/path/to/local/file.txt" https://upload.example.com/upload
🧠 五、处理 Cookies
1. 发送 Cookie
当你需要发送特定的 Cookie 给服务器时,可以使用 -b 选项:
curl -b "sessionid=abc123;user=john" https://api.example.com/userinfo
2. 保存 Cookie 到文件
如果你想让 curl 自动管理 Cookie,并将其保存到文件以便后续请求使用,可以这样做:
curl -c cookies.txt https://login.example.com
之后,在其他请求中加载这些 Cookie:
curl -b cookies.txt https://api.example.com/userinfo
🧱 六、SSL/TLS 安全连接
当访问 HTTPS 站点时,curl 默认会验证服务器提供的 SSL 证书。如果遇到证书问题,你可以选择跳过验证(不推荐):
curl -k https://insecure.example.com
更好的做法是手动安装正确的 CA 证书,或者确保系统已经配置了正确的 CA 证书库。
📊 七、实战案例:RESTful API 测试
假设你正在开发一个 RESTful API,想要测试其不同端点的功能。以下是几个例子:
1. 创建新资源
curl -X POST -H "Content-Type: application/json" -d '{"title":"New Post","author":"John Doe"}' https://api.example.com/posts
2. 更新现有资源
curl -X PUT -H "Content-Type: application/json" -d '{"title":"Updated Post Title"}' https://api.example.com/posts/123
3. 删除资源
curl -X DELETE https://api.example.com/posts/123
4. 获取资源列表
curl https://api.example.com/posts
🧪 实验练习题(动手练一练)
- 使用
curl向你的 Web 服务器发送一个带有自定义头部的 GET 请求,并检查响应头是否正确接收到了自定义头部。 - 尝试通过
curl发送 POST 请求,上传一个本地文件到支持文件上传的 Web 服务。 - 编写一个 Bash 脚本,利用
curl自动化地从多个 URL 中抓取数据并保存到本地。 - 在安全环境下测试如何使用
curl处理登录流程(包括发送凭证、保存和发送 Cookie)。 - 结合
grep和awk分析curl输出的日志信息,提取有用的数据。
🧩 拓展阅读
man curl:查看完整帮助文档curl --help:快速查看可用选项- 《HTTP: The Definitive Guide》——深入理解 HTTP 协议
- 《RESTful Web Services》——探索 REST 架构风格
🎉 恭喜!你已经掌握了 Linux 中非常实用且强大的网络工具之一 curl,下一章节我们将进入《Linux jq 命令解析JSON数据》的学习,敬请期待!🚀

浙公网安备 33010602011771号