Linux中的Curl命令示例

curl 是一个命令行实用程序,用于从设计为无需用户交互即可工作的服务器之间传输数据。 用 curl,则可以使用受支持的协议之一(包括HTTP,HTTPS,SCP,SFTP和FTP)下载或上传数据。 curl 提供了许多选项,使您可以继续传输,限制带宽,代理支持,用户身份验证等等。

在本教程中,我们将通过实际示例和最常见的卷曲选项的详细说明,向您展示如何使用卷曲工具。

安装Curl#

curl软件包已预安装在当今的大多数Linux发行版中。

要检查系统上是否安装了Curl软件包,请打开控制台,键入 curl,然后按Enter。 如果你有 curl 安装后,系统将打印 curl: try 'curl --help' or 'curl --manual' for more information。 否则,您会看到类似 curl command not found

如果 curl 未安装,您可以使用发行版的软件包管理器轻松安装。

在Ubuntu和Debian上安装Curl#

sudo apt updatesudo apt install curl

在CentOS和Fedora上安装Curl

sudo yum install curl

如何使用卷曲

的语法 curl 命令如下:

curl [options] [URL...]

以最简单的形式,当不带任何选项调用时, curl 将指定资源显示到标准输出。

例如,要检索 example.com 您要运行的首页:

curl example.com

该命令将打印 example.com 终端窗口中的主页。

如果未指定协议, curl 尝试猜测您要使用的协议,它将默认为 HTTP

将输出保存到文件中

保存结果 curl 命令,使用 -o 要么 -O 选项。

小写 -o 使用预定义的文件名保存文件,在以下示例中为 vue-v2.6.10.js

curl -o vue-v2.6.10.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 - 选项。 如果在下载大文件期间连接断开,这很有用,那么您可以继续上一个,而不是从头开始下载。

例如,如果要使用以下命令下载Ubuntu 18.04 iso文件:

curl -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso

突然之间,您的连接断开了,您可以通过以下方式继续下载:

curl -C - -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso

获取URL的HTTP标头

HTTP标头是用冒号分隔的键/值对,其中包含诸如用户代理,内容类型和编码之类的信息。 标头通过请求或响应在客户端和服务器之间传递。

使用 -I 选项仅获取指定资源的HTTP标头:

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

测试网站是否支持HTTP / 2#

要检查特定的URL是否支持新的HTTP / 2协议,请使用以下命令获取HTTP标头 -I 随着 --http2 选项:

curl -I --http2 -s https://linuxize.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。

跟随重定向

默认, curl 不遵循HTTP Location标头。

如果您尝试检索的非www版本的 google.com,您会注意到,除了获取页面来源之外,您还将被重定向到www版本:

curl google.com

卷曲跟随重定向

-L 选项指令 curl 遵循任何重定向直到到达最终目的地:

curl -L google.com

更改用户代理号

有时,在下载文件时,远程服务器可能被设置为阻止Curl User-Agent或返回不同的内容,具体取决于访问者设备和浏览器。

在这种情况下模拟其他浏览器时,请使用 -A 选项。

例如,要模拟Firefox 60,可以使用:

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

指定最大传输速率

--limit-rate 选项允许您限制数据传输速率。 该值可以用字节,千字节和 k 后缀,以MB为单位 m 后缀和千兆字节 g 后缀。

在下面的例子中 curl 将下载Go二进制文件并将下载速度限制为1 mb:

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

此选项有助于防止 curl 消耗所有可用带宽。

通过FTP传输文件

使用以下命令访问受保护的FTP服务器 curl, 使用 -u 选项并指定用户名和密码,如下所示:

curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/

登录后,该命令将列出用户主目录中的所有文件和目录。

您可以使用以下语法从FTP服务器下载单个文件:

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发出HTTP请求,以访问远程资源或调试问题。

默认情况下,在请求资源时 curl,则不会发送或存储任何Cookie。

要将Cookie发送到服务器,请使用 -b 开关,后跟包含Cookie或字符串的文件名。

例如,下载Oracle Java JDK rpm文件 jdk-10.0.2_linux-x64_bin.rpm 您需要传递一个名为 oraclelicense 有价值 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)选项,然后是代理网址。

以下命令在以下位置使用代理下载指定资源: 192.168.44.1 港口 8888

curl -x 192.168.44.1:8888 http://linux.com/

如果代理服务器需要身份验证,请使用 -U--proxy-user)选项,后跟用户名和密码,并用冒号(user:password):

curl -U username:password -x 192.168.44.1:8888 http://linux.com/

结论#

curl 是一个命令行工具,可让您从远程主机或向远程主机传输数据。 对于解决问题,下载文件等有用。

本教程中显示的示例很简单,但是展示了最常用的示例 curl 选项,旨在帮助您了解 curl 指挥工作。

有关更多信息 curl 访问“卷曲文档”页面。

如果您有任何疑问或反馈,请随时发表评论。

卷毛端子

Sidebar