早在20世纪90年代中期,当时互联网还处于萌芽阶段,瑞典程序员Daniel Stenberg开始了一个项目,这个项目最终发展成了我们今天所知道的curl。
最初,他的目标是开发一种机器人,可以定期从网页上下载货币汇率,并向IRC用户提供等值的瑞典克朗美元。
长话短说,这个项目蓬勃发展,在这个过程中添加了几个协议和特性——剩下的就是历史了。现在,让我们开始学习如何在Linux中使用curl传输数据和更多信息!
我们为您整理了以下13个curl命令。
1. 查看curl版本
版本选项不仅返回版本,还返回当前版本中支持的协议和特性。
linuxidc@linuxidc:~/www.linuxidc.com$ curl --version
curl 7.58.0 (x86_64-pc-linux-gnu) libcurl/7.58.0 OpenSSL/1.1.0g zlib/1.2.11 libidn2/2.0.4 libpsl/0.19.1 (+libidn2/2.0.4) nghttp2/1.30.0 librtmp/2.3
Release-Date: 2018-01-24
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL
2.下载文件
如果要下载文件,可以将curl与-O或-o选项一起使用。 前者将使用与远程位置相同的名称将文件保存在当前工作目录中,而后者允许您指定不同的文件名和/或位置。
$ curl -O https://www.linuxidc.com/index.htm # 另存为index.htm
$ curl -o linuxidc.com.htm https://www.linuxidc.com/index.htm # 另存为linuxidc.com.htm
实例如下:
linuxidc@linuxidc:~/www.linuxidc.com$ curl -O https://www.linuxidc.com/index.htm % Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 45530 0 45530 0 0 186k 0 --:--:-- --:--:-- --:--:-- 186k
linuxidc@linuxidc:~/www.linuxidc.com$ curl -o linuxidc.com.htm https://www.linuxidc.com/index.htm
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 45607 100 45607 0 0 140k 0 --:--:-- --:--:-- --:--:-- 139k
linuxidc@linuxidc:~/www.linuxidc.com$ ls
index.htm linuxidc.com.htm
3.恢复中断下载
如果下载因某种原因而中断(例如,使用Ctrl + c),则可以非常轻松地恢复。 使用-C - (破折号C,空格破折号)告诉curl从中断处继续下载。
$ curl -C - -O https://www.linuxidc.com/linuxidc.com.tar.gz
4.下载多个文件
使用以下命令,您将分别从https://www.linuxidc.com和https://m.linuxidc.com一起下载aboutus和info.htm。
$ curl -O https://www.linuxidc.com/aboutus -O https://m.linuxidc.com/info.htm
5.从文件下载URL
如果将curl与xargs结合使用,则可以从文件中的URL列表中下载文件。
$ xargs -n 1 curl -O < wenjianlisturls.txt
6.使用具有或不具有身份验证的代理
如果您是在proxy.yourdomain.com上侦听端口8080的代理服务器,请执行此操作。
$ curl -x proxy.linuxidc.com:8080 -U user:password -O
如果您的代理不需要身份验证,您可以跳过-U user:password。
7.查询HTTP标头
HTTP标头允许远程Web服务器发送有关自身的其他信息以及实际请求。 这为客户提供了有关如何处理请求的详细信息。
要从网站查询HTTP标头,请执行以下操作:
$ curl -I https://www.linuxidc.com
您可以在浏览器的开发人员工具中找到此信息。
8.使用参数发出POST请求
以下命令将firstName和lastName参数及其对应值发送到https://www.linuxidc.com/info.php。
$ curl --data "firstName=John&lastName=Doe" https://www.linuxidc.com/info.php
您可以使用此提示来模拟常规HTML表单的行为。
9.使用或不使用身份验证从FTP服务器下载文件
如果远程FTP服务器需要在ftp://ftpserver上进行连接,则以下命令将在当前工作目录中下载linuxidc.tar.gz。
$ curl -u username:password -O ftp://ftpserver/linuxidc.tar.gz
如果FTP服务器允许匿名登录,您可以跳过-u username:password。
10.使用或不使用身份验证将文件上载到FTP服务器
要使用curl将名为wodewenjian.tar.gz的本地文件上载到ftp://ftpserver,请执行以下操作:
$ curl -u username:password -T wodewenjian.tar.gz ftp://ftpserver
11.存储网站Cookie