curl
命令在shell中可是一个非常强大的工具,主要用来传输数据,它支持多种协议,包括HTTP、HTTPS、FTP、FTPS等等。其功能非常丰富,用法也相当多样,这里详细的分析一下curl
命令的各种使用方式。
基础用法
- 下载文件
`curl http://example.com/file.txt`
这条命令会将URL指向的数据输出到标准输出,通常是你的终端。
- 保存下载的文件
`curl -o filename.txt http://example.com/file.txt`
使用`-o`选项后跟文件名,可以将下载的数据保存到指定的文件中。
- 发送POST请求
`curl -d "param1=value1¶m2=value2" http://example.com/post`
`-d`选项用于发送POST数据。
- 发送GET请求
`curl -G -d "param1=value1¶m2=value2" http://example.com/get`
`-G`选项使得`curl`把数据附加在URL后面,使用GET方法来发送请求。
- 添加HTTP头
`curl -H "X-Custom-Header: value" http://example.com`
`-H`选项用于添加一个自定义的HTTP头。
进阶用法
- 用户认证
`curl -u username:password http://example.com`
`-u`选项用于提供需要认证的网站的用户名和密码。
- 从文件中读取POST数据
`curl -d @filename http://example.com/post`
`-d`选项后面使用`@`符号可以从文件中读取要发送的数据。
- 指定请求方法
`curl -X POST http://example.com`
`-X`选项用于指定使用的HTTP方法。
- 传输文件(例如FTP)
`curl -T myfile.txt ftp://ftp.example.com/remote/path/`
`-T`选项用于上传文件到FTP服务器。
- 跟踪重定向
`curl -L http://example.com`
`-L`选项让curl跟踪服务器的重定向。
安全相关
- 使用HTTPS协议
`curl -E mycert.pem https://secure.example.com`
`-E`选项用于指定一个证书,用于HTTPS的加密连接。
- 禁用证书验证
`curl -k https://example.com`
`-k`或`--insecure`选项让curl不去验证SSL证书的有效性。
静默模式
- 静默/安静模式
`curl -s http://example.com`
`-s`或`--silent`选项让`curl`在执行时不显示进度条和错误信息,这在脚本中非常有用,可以避免输出过多的信息。
安全选项
- 忽略SSL证书验证
`curl -k http://example.com`
`-k`或`--insecure`允许`curl`执行“不安全”的SSL连接和数据传输,不验证对方的证书。
输出控制
- 显示头信息
`curl -i http://example.com`
`-i`或`--include`用于在输出中包括HTTP响应头。
- 仅输出响应体
`curl -s -o /dev/null -D - http://example.com`
使用`-D -`选项可以仅输出响应头到标准输出,结合`-o /dev/null`则仅显示响应头,不显示响应体。
数据处理
- 发送JSON数据
`curl -H "Content-Type: application/json" -d '{"key1":"value1", "key2":"value2"}' http://example.com/post`
通过`-H`添加`Content-Type`为`application/json`并使用`-d`发送JSON格式的数据。
- 从标准输入读取数据发送
`cat data.txt | curl -d @- http://example.com/post`
使用`-d @-`从标准输入读取数据。
文件下载和上传
- 断点续传
`curl -C - -o file.part http://example.com/bigfile.zip`
`-C -`指示`curl`自动寻找本地文件大小,并从上次中断处继续下载。
- 并行下载
`curl -Z -O http://example.com/file1.zip -O http://example.com/file2.zip`
`-Z`或`--parallel`可以并行处理多个文件下载。
调试和追踪
- 详细模式
`curl -v http://example.com`
`-v`或`--verbose`会显示请求和响应的所有信息,包括发送的头、请求数据、连接信息等。
- 跟踪数据包
`curl --trace output.txt http://example.com`
`--trace`选项输出很详细的调试信息,这些信息被写入到指定的文件中,包括二进制数据。
其他有用的选项
- 设置连接超时
`curl --connect-timeout 10 http://example.com`
`--connect-timeout`选项用于设置连接超时的秒数。
- 显示详细的信息
`curl -v http://example.com`
`-v`或`--verbose`选项用于打印详细的信息,有助于调试。
- 保存和读取Cookie
`curl -c cookies.txt http://example.com
curl -b cookies.txt http://example.com`
`-c`选项用于保存响应中的cookie到文件,`-b`选项用于在请求中包含这些cookie。
这些是curl
的一些常用命令和技巧,当然curl
的功能远不止这些。它还支持代理、速率限制、时间条件请求等高级功能,你可以通过阅读curl
的man页面(man curl
)或在线文档来获取更多详细信息。希望这些信息对你有用!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。