Linux Curl命令示例
curl
是用于在本地计算机与远程服务器之间传输数据的命令行工具。使用curl时您可以使用HTTP,HTTPS, SCP , SFTP和FTP等协议下载或上传数据。Curl提供了许多选项,使您可以恢复上传/下载,限制带宽,代理支持,用户身份验证等。
在本教程中,我们将说明如何使用curl。包括安装curl,下载一个文件或者多个文件,curli下载的恢复/断点续传,打印curl请求的响应头,测试网站是否支持HTTP/2,跟随301重定向,登录/访问FTP服务器下载文件,更改用户代理User-Agent,使curl通过代理下载文件,发送Cookie等。
安装Curl
curl命令已预装在大多数Linux发行版中。要检查系统上是否安装了curl命令,请打开控制台,键入curl
,然后按Enter。
如果已安装curl,则系统将打印curl: try 'curl --help' or 'curl --manual' for more information
,否则您将看到类似于curl
命令未找到curl command not found
的信息。如果你尚未安装curl,则可以使用发行版的软件包管理器apt命令或者yum命令安装curl
。
在Ubuntu和Debian上安装Curl
sudo apt install curl
在CentOS和Fedora上安装Curl
sudo yum install curl
Curl命令与选项
curl
命令的语法如下:
curl [options] [URL...]
options
指定curl的选项。URL
表示远程服务器的地址。在不使用任何选项的情况下,curl
将下载指定的URL资源重定向到标准输出中。
以下curl
命令,将会下载我们站点的首页myfreax.com
,并重定向到标准输出:
curl myfreax.com
该命令将在您的终端中打印myfreax.com
主页的源码。如果您未指定使用的协议,curl将默认使用HTTP
协议。
下载文件
要保存curl
命令下载的文件,可以使用-o
或-O
选项。使用小写-o
选项你可以指定保存文件的名称。你还可以指定绝对路径,curl命令将会把文件到你指定的绝对路径中。
以下curl
命令将会下载vue.js文件到你当前的目录中,并使用vue-v2.5.16.js
名称保存文件:
curl -o vue-v2.5.16.js https://cdn.jsdelivr.net/npm/vue/dist/vue.js
大写-O
将使用其原始文件名保存文件:
curl -O https://cdn.jsdelivr.net/npm/vue/dist/vue.js
下载多个文件
要一次下载多个文件,请使用多个-O
选项,后跟要下载文件的URL。在以下示例中,我们下载Arch Linux和Debian iso文件:
curl -O http://mirrors.edge.kernel.org/archlinux/iso/2018.06.01/archlinux-2018.06.01-x86_64.iso \ -O https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.4.0-amd64-netinst.iso
恢复/断点续传下载
您可以使用-C -
选项恢复下载。如果您在下载大文件期间断开连接。你无需从头开始下载,可以使用-C -
选项继续上一次的下载。
例如,如果要使用curl命令下载Ubuntu 18.04 iso文件突然之间您的连接断开了,您可以通过以下方式恢复下载:
curl -C - -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso
打印HTTP响应头
HTTP响应头是使用冒号分隔的键/值对,其中包含服务器类型,通常是Nginx/Apache,内容类型和HTTP状态码等信息。-I
选项允许您仅获取指定URL资源的响应头:
curl -I --http2 https://www.ubuntu.com/
测试HTTP/2的支持
要检查指定的URL是否支持HTTP/2协议,请使用-I
和--http2
选项来获取HTTP响应头,然后使用grep过滤输出:
curl -I --http2 -s https://myfreax.com/ | grep HTTP
-s
选项,指示curl以静默方式运行并隐藏进度和错误消息。如果远程服务器支持HTTP/2协议,则curl
将打印HTTP/2.0 200
:
HTTP/2 200
否则,响应将为HTTP/1.1 200
:
HTTP/1.1 200 OK
如果您使用的curl版本7.47.0
或更高版本,则不需要使用--http2
选项,因为默认情况下,所有HTTPS连接都启用了HTTP/2。
跟随301重定向
如果您尝试在没有www
的情况下检索google.com主页,你会注意到以下301页面的内容:
curl google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"><TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>
从上面的输出中可以看到,google.com
被重定向到www版本,并且由于默认情况下curl不遵循HTTP Location header,因此您不会获得Google主页的源码。
-L
选项,指示curl遵循301重定向,直到到达最终目的地:
curl -L google.com
使用用户代理User-Agent
有时,在下载文件时,可以配置远程服务器阻止curl的User-Agent用户代理,或者根据访问者的设备和浏览器,提供的不同页面内容。
为了避免服务器根据访问者的User-Agent用户代理提供不同内容。您可以使用curl
命令的-A
选项模拟其他浏览器的User-Agent用户代理。
curl -A "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" https://getfedora.org/
上面的命令将模拟Firefox 60从getfedora.org
请求页面。
限制最大传输速度
--limit-rate
选项允许您限制数据传输速度/速率。该值可以以字节表示,以k
为后缀时表示为千字节,以m
为后缀表示为兆字节,以g
为后缀表示为千兆字节。
以下curl命令,将下载Go二进制文件并将下载速度限制为1MB:
curl --limit-rate 1m -O https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz
当您不希望curl消耗所有可用带宽时,此选项很有用。
FTP协议下载/上传文件
要使用curl
命令访问受保护的FTP服务器,请使用-u
选项并指定用户名和密码。以下curl命令将列出用户的FTP目录中的所有文件。
curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/
如你需要从FTP服务器下载文件,您可以使用以下curl命令下载文件到当前目录中:
curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/file.tar.gz
要将文件上传到FTP服务器,请使用-T
选项,然后加上您要上传的文件的名称:
curl -T newfile.tar.gz -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/
发送Cookie
使用curl发出请求时,默认情况下不发送或存储任何cookie。有时您可能需要使用特定的Cookie发起HTTP请求才能访问远程资源或调试问题。要将Cookie发送到服务器,请使用-b
选项,后跟Cookie字符串或者包含Cookie的文件名称。
例如,要下载Oracle Java JDK rpm文件jdk-10.0.2_linux-x64_bin.rpm
,您需要传递一个名为oraclelicense
的cookie,其值为a
:
curl -L -b "oraclelicense=a" -O http://download.oracle.com/otn-pub/java/jdk/10.0.2+13/19aef61b38124481863b1413dce1855f/jdk-10.0.2_linux-x64_bin.rpm
使用代理
Curl支持不同类型的代理,包括HTTP,HTTPS和SOCKS。要通过代理服务器传输数据,请使用-x
/--proxy
选项,后跟代理URL。
以下curl
命令将使用192.168.44.1:8888
代理服务器,访问http://linux.com/
页面:
curl -x 192.168.44.1:8888 http://linux.com/
如果代理服务器需要身份验证,请使用-U
/--proxy-user
选项,后跟用冒号分隔的用户名和密码user:password
:
curl -U mark:Passvv0rd -x 192.168.44.1:8888 http://linux.com/
结论
本教程中显示的示例很简单,但演示了最常用的curl选项,旨在帮助您了解curl
命令的工作方式。要了解有关curl的更多信息,请访问curl文档页。
以上是 Linux Curl命令示例 的全部内容, 来源链接: utcz.com/z/507145.html