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