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)或在线文档来获取更多详细信息。希望这些信息对你有用!