3

Curl命令示例 | myfreax

 2 years ago
source link: https://www.myfreax.com/curl-command-examples/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Linux Curl命令示例

Curl是一种命令行实用程序,用于从服务器传输数据或向服务器传输数据,该服务器设计为无需用户交互即可工作。使用curl时,您可以使用受支持的协议之一下载或上传数据,包括HTTP,HTTPS, SCP , SFTP 和 FTP 。在本教程中,我们将通过实际示例和最常见的curl选项的详细说明向您展示如何使用curl工具。

Published 4 Nov 2019

9 min read

By myfreax
Linux Curl命令示例

curl是用于在本地计算机与远程服务器之间传输数据的命令行工具。使用curl时您可以使用HTTP,HTTPS, SCP SFTPFTP等协议下载或上传数据。

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

如果你使用的是基于Debian的Linux发行版,例如Ubuntu,Linux Mint等。你可以运行sudo apt install curl命令安装curl。

如果你使用的是基于Redhat的Linux发行版,例如CentOS,Fedora等。你可以运行sudo yum install curl命令安装curl。

Curl命令与选项

curl命令的语法格式是curl [options] [URL...],其中options指定curl的选项URL表示远程服务器的地址。

在不使用任何选项的情况下,curl将下载指定的URL资源并重定向到标准输出中。命令curl myfreax.com,将会下载我们站点的首页myfreax.com,并重定向到标准输出。

该命令将在您的终端中打印myfreax.com主页的源码。如果您未指定使用的协议,curl将默认使用HTTP协议。

默认情况下curl将下载url的资源并重定向标准输出。如果要保存下载的文件,可以使用-o-O选项。

使用小写-o选项你可以指定保存文件的名称。你还可以指定绝对路径,curl将会把文件到你指定的绝对路径中。

大写-O选项将使用其原始文件名保存到文件,并将保存到当前目录下,即运行curl命令所在目录的位置。

以下curl命令将会下载vue.js文件到你当前的目录中,并使用vue-v2.5.16.js名称保存文件到当前目录下。

当下载完成后,你可以使用ls列出curl下载的vue.js文件。ls vue*表示列出名称包含vue字符串的文件。

curl -o /home/myfreax/work/vue.js https://cdn.jsdelivr.net/npm/vue/dist/vue.js

curl -O https://cdn.jsdelivr.net/npm/vue/dist/vue.js
ls vue* #查看刚下载文件

下载多个文件

要一次下载多个文件,请使用多个-O选项或者小写的-o选项,后跟要下载文件的URL。

和使用curl下载单个文件一样。当使用小写的-o选项时你需要指定的下载目录路径。使用大写-O选项会保存当前目录下。你还可以混合使用小写的-o选项和大写-O选项。

以下curl命令在使用-O选项时将会下载vue.js文件到你当前的目录中,并使用vue.js名称保存文件

小写-o选项将会下载vue.js文件myfreax用户的家目录下的wrok目录,并将文件保存为vue.js。

当下载完成后,你可以使用ls列出curl下载的文件&&表示顺序运行命令。

curl -o /home/myfreax/work/vue.js https://cdn.jsdelivr.net/npm/vue/dist/vue.js \
-O https://cdn.jsdelivr.net/npm/vue/dist/vue.js

ls /home/myfreax/work/vue.js && ls vue.js #查看刚下载文件

断点续传/恢复下载

如果您在下载大文件期间断开连接。你无需从头开始下载,可以使用-C -选项继续上一次的下载。

你可以在第一次下载大文件时直接指定-C -选项,当下载大文件断开连接时,直接使用之前的命令即可恢复下载。

例如,如果要使用curl命令下载Ubuntu 22.04 iso文件突然之间您的连接断开了,您可以通过以下方式恢复下载:

curl -C - -O https://releases.ubuntu.com/22.04/ubuntu-22.04-desktop-amd64.iso

打印HTTP响应头

HTTP响应头是使用冒号分隔的键/值对,其中包含服务器类型,通常是Nginx/Apache,内容类型和HTTP状态码等信息。

curl的-I选项允许您仅获取指定URL资源的HTTP响应头,也包括你在Nginx或者Apache设置的自定义响应头。

以下curl命令将会获取url是https://www.ubuntu.com/的响应头,在支持HTTP2服务器上使用HTTP2协议。

curl -I --http2 https://www.ubuntu.com/

测试HTTP/2的支持

要检查指定的URL是否支持HTTP/2协议,请使用-I--http2选项来获取HTTP响应头,然后使用grep过滤输出。

如果您使用的curl版本7.47.0或更高版本,则不需要使用--http2选项,因为默认情况下,所有HTTPS连接都启用了HTTP/2。

-s选项,指示curl以静默方式运行并隐藏进度和错误消息。如果远程服务器支持HTTP/2协议,则将打印HTTP/2.0 200,否则响应将为HTTP/1.1 200

curl -I --http2 -s https://myfreax.com/ | grep HTTP

#HTTP/2 200 支持http2
#HTTP/1.1 200 OK 不支持http2

301重定向

如果使用命令curl google.com尝试在没有www的情况下检索google.com主页,你会注意到以下301页面的内容。

从301重定向的页面内容中可以看到,google.com被重定向到www版本。并且由于默认情况下curl不遵循HTTP Location header,因此您不会获得Google主页的源码。

curl的-L/--location选项,指示curl跟随301重定向,直到服务器不返回状态码301才会终止。

curl -L google.com

使用用户代理User-Agent

你应该遇到在使用不同浏览器时,有个浏览器可以下载,或者某个浏览器不能下载的情况。或者根据访问者的设备和浏览器,提供的不同页面内容。

这是因为根据User-Agent用户代理进行区分用户的设备类型,从而确定返回不同的内容或者阻止你的下载与访问。

为了避免服务器根据访问者的User-Agent用户代理提供不同内容。您可以使用curl命令的-A选项模拟其他浏览器的User-Agent用户代理。

以下curl命令将模拟Firefox 60请求https://getfedora.org/页面。

curl -A "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" https://getfedora.org/

限制传输速度

--limit-rate选项允许您限制数据传输速度/速率。默认的速度的单位是字节。你可以使用kmg作为后缀,表示以不同的单位作为下载速度。

以下curl命令将下载Go二进制文件并将下载速度限制为1MB,-O选项表示保存到文件到当前目录中。

curl --limit-rate 1m -O https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz

下载/上传FTP文件

curl除了支持HTTP协议之外,还支持FTP协议文件下载和上传,以及列出FTP服务器的文件。

如果你需要要使用curl命令访问受保护的FTP服务器,请使用-u选项并指定用户名和密码。

使用Curl列出文件时请指定目录的位置,curl将会列出目录的文件。如果指定的位置是文件curl将会下载该文件到当前目录中。

curl的-T选项允许你文件上传到FTP服务器,-T选项之后是您要上传的文件,也指定文件的绝对路径。

以下curl命令将列出用户的FTP目录中的所有文件。

curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/ #列出文件

curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/file.tar.gz #下载文件

curl -T newfile.tar.gz -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/ #上传文件

发送Cookie

使用curl发出请求时,默认情况下不发送或存储任何cookie。有时您可能需要使用特定的Cookie发起HTTP请求才能访问远程资源或调试。

curl的-b选项允许你将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。

如果代理服务器需要身份验证,请使用-U/--proxy-user选项,后跟用冒号分隔的用户名和密码。

以下curl命令将使用192.168.44.1:8888代理服务器,访问http://linux.com/页面。

curl -x 192.168.44.1:8888 http://linux.com/
curl -U mark:Passvv0rd -x 192.168.44.1:8888 http://linux.com/

本教程中显示的示例很简单,但演示了最常用的curl选项,旨在帮助您了解curl命令的工作方式。要了解有关curl的更多信息,请访问curl文档页。

Share this article:


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK