头图

curl命令在shell中可是一个非常强大的工具,主要用来传输数据,它支持多种协议,包括HTTP、HTTPS、FTP、FTPS等等。其功能非常丰富,用法也相当多样,这里详细的分析一下curl命令的各种使用方式。

基础用法

  1. 下载文件

`curl http://example.com/file.txt` 

这条命令会将URL指向的数据输出到标准输出,通常是你的终端。
  1. 保存下载的文件


`curl -o filename.txt http://example.com/file.txt` 

使用`-o`选项后跟文件名,可以将下载的数据保存到指定的文件中。
  1. 发送POST请求


`curl -d "param1=value1&param2=value2" http://example.com/post` 

`-d`选项用于发送POST数据。
  1. 发送GET请求


`curl -G -d "param1=value1&param2=value2" http://example.com/get` 

`-G`选项使得`curl`把数据附加在URL后面,使用GET方法来发送请求。
  1. 添加HTTP头


`curl -H "X-Custom-Header: value" http://example.com` 

`-H`选项用于添加一个自定义的HTTP头。

进阶用法

  1. 用户认证


`curl -u username:password http://example.com` 

`-u`选项用于提供需要认证的网站的用户名和密码。
  1. 从文件中读取POST数据


`curl -d @filename http://example.com/post` 

`-d`选项后面使用`@`符号可以从文件中读取要发送的数据。
  1. 指定请求方法


`curl -X POST http://example.com` 

`-X`选项用于指定使用的HTTP方法。
  1. 传输文件(例如FTP)


`curl -T myfile.txt ftp://ftp.example.com/remote/path/` 

`-T`选项用于上传文件到FTP服务器。
  1. 跟踪重定向


`curl -L http://example.com` 

`-L`选项让curl跟踪服务器的重定向。

安全相关

  1. 使用HTTPS协议


`curl -E mycert.pem https://secure.example.com` 

`-E`选项用于指定一个证书,用于HTTPS的加密连接。
  1. 禁用证书验证


`curl -k https://example.com` 

`-k`或`--insecure`选项让curl不去验证SSL证书的有效性。

静默模式

  1. 静默/安静模式


`curl -s http://example.com` 

`-s`或`--silent`选项让`curl`在执行时不显示进度条和错误信息,这在脚本中非常有用,可以避免输出过多的信息。

安全选项

  1. 忽略SSL证书验证


`curl -k http://example.com` 

`-k`或`--insecure`允许`curl`执行“不安全”的SSL连接和数据传输,不验证对方的证书。

输出控制

  1. 显示头信息


`curl -i http://example.com` 

`-i`或`--include`用于在输出中包括HTTP响应头。
  1. 仅输出响应体


`curl -s -o /dev/null -D - http://example.com` 

使用`-D -`选项可以仅输出响应头到标准输出,结合`-o /dev/null`则仅显示响应头,不显示响应体。

数据处理

  1. 发送JSON数据


`curl -H "Content-Type: application/json" -d '{"key1":"value1", "key2":"value2"}' http://example.com/post` 

通过`-H`添加`Content-Type`为`application/json`并使用`-d`发送JSON格式的数据。
  1. 从标准输入读取数据发送


`cat data.txt | curl -d @- http://example.com/post` 

使用`-d @-`从标准输入读取数据。

文件下载和上传

  1. 断点续传


`curl -C - -o file.part http://example.com/bigfile.zip` 

`-C -`指示`curl`自动寻找本地文件大小,并从上次中断处继续下载。
  1. 并行下载


`curl -Z -O http://example.com/file1.zip -O http://example.com/file2.zip` 

`-Z`或`--parallel`可以并行处理多个文件下载。

调试和追踪

  1. 详细模式


`curl -v http://example.com` 

`-v`或`--verbose`会显示请求和响应的所有信息,包括发送的头、请求数据、连接信息等。
  1. 跟踪数据包


`curl --trace output.txt http://example.com` 

`--trace`选项输出很详细的调试信息,这些信息被写入到指定的文件中,包括二进制数据。

其他有用的选项

  1. 设置连接超时


`curl --connect-timeout 10 http://example.com` 

`--connect-timeout`选项用于设置连接超时的秒数。
  1. 显示详细的信息


`curl -v http://example.com` 

`-v`或`--verbose`选项用于打印详细的信息,有助于调试。
  1. 保存和读取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)或在线文档来获取更多详细信息。希望这些信息对你有用!


AI视界
18 声望3 粉丝

热爱自然,热爱生活的程序猿一枚,像是这世界上普通的花草,偶尔抬头看看远方的白雪皑皑,平凡而充满执念。