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 update
sudo 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
访问“卷曲文档”页面。
如果您有任何疑问或反馈,请随时发表评论。
卷毛端子