Linux curl命令是一个功能强大的网络传输工具,它支持多种协议(如HTTP、HTTPS、FTP、FTPS、SCP等),能够通过命令行与服务器进行数据交互,常用于文件传输、API测试、网页内容获取等场景,其基本语法为curl [选项] [URL]
,通过不同选项的组合可以实现灵活的操作。

curl的核心功能体现在数据传输与请求控制上,使用-X
选项可指定请求方法(如-X POST
用于发送POST请求),-d
选项用于传递POST数据(如-d "name=test"
),-H
选项可添加请求头(如-H "Content-Type: application/json"
),对于文件上传,-F
选项支持multipart/form-data格式(如-F "file=@/path/to/file"
),若需保存响应内容到本地文件,可通过-o
或-O
选项(-o
指定文件名,-O
保留远程文件名)。-L
选项可跟随重定向,-I
或-head
仅获取响应头信息,-v
或--verbose
输出详细通信过程,便于调试。
curl还提供了丰富的认证与安全选项。-u
用于用户名和密码认证(如-u user:pass
),-k
或--insecure
可忽略SSL证书验证(不推荐生产环境使用),--cert
和--key
分别指定客户端证书和私钥文件路径,对于复杂场景,可通过--config
选项加载配置文件,或使用显示传输进度条。
以下为常用选项的总结:
选项 | 功能 | 示例 |
---|---|---|
-X |
指定请求方法 | curl -X POST http://example.com |
-d |
发送POST数据 | curl -d "key=value" http://example.com |
-H |
添加请求头 | curl -H "Authorization: Bearer token" http://example.com |
-o |
保存响应到文件 | curl -o output.html http://example.com |
-L |
跟随重定向 | curl -L http://example.com/redirect |
-I |
仅获取响应头 | curl -I http://example.com |
-v |
显示详细通信过程 | curl -v http://example.com |
-u |
设置认证信息 | curl -u user:pass http://example.com |
-k |
忽略SSL证书验证 | curl -k https://example.com |
curl的进阶功能包括会话保持(-c
和-b
选项用于处理Cookie)、代理设置(-x
选项指定代理服务器)、限速控制(--limit-rate
选项限制传输速率)等。curl -c cookies.txt -b cookies.txt http://example.com
可模拟浏览器登录状态,对于批量操作,curl可与shell脚本结合,通过循环处理多个URL,或结合管道符()将响应内容传递给其他命令处理。

在实际应用中,curl常用于API测试,测试RESTful API时,可使用以下命令:
curl -X POST -H "Content-Type: application/json" -d '{"name":"test","age":30}' http://api.example.com/users
该命令发送JSON格式的POST请求,并获取服务器响应,curl支持断点续传(-C -
选项),在下载中断后可从断点继续传输,适用于大文件下载。
需要注意的是,curl在处理敏感信息时应避免在命令行中直接暴露密码,建议通过环境变量或配置文件传递,对于高并发场景,可通过--parallel
选项(需curl 7.66.0+)实现多线程传输,提高效率。
相关问答FAQs
Q1: curl如何下载文件并显示实时进度?
A1: 使用选项可显示进度条,结合-o
指定保存路径。
curl -# -o file.zip http://example.com/file.zip
进度条会实时显示下载速度、剩余时间等信息,便于监控传输状态。

Q2: curl如何通过代理服务器访问目标网站?
A2: 通过-x
选项指定代理地址,格式为-x [protocol://]host[:port]
。
curl -x http://proxy.example.com:8080 http://target.com
若代理需要认证,可使用-U
选项添加用户名和密码:
curl -x http://proxy.example.com:8080 -U user:pass http://target.com