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 curlCurl命令与选项
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
