什么是cURL命令以及如何使用它(附示例)
cURL,简称“客户端URL”,是一种使用各种协议传输数据的命令行工具。它是一个重要的Linux工具,经常用于连接故障排除。
最基本的是,cURL允许您通过以URL的形式定义位置和要传输的数据来与服务器通信。您可以调用
卷曲
命令,而不用考虑如何安装它,因为它预装在大多数基于Linux的操作系统上。
cURL有大量的用例,例如:
- FTP上传
- 代理支持
- SSL连接
- HTTP帖子
cURL还支持使用以下所有协议:DICT、FILE、FTP、FTPS、GOPHER、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、POP3、POP3S、RTMP、RTSP、SCP、SFTP、SMB、SMBS、SMTP、SMTPS、TELNET和TFTP。
下载单个文件
以下命令将获取URL的内容并将其显示在STDOUT中(即,在您的终端上)。
curl https:
//www.gnu.org
代码语言:
JavaScript
(
javascript
)
要将输出存储在文件中,可以重定向它,如下所示。这也将显示一些额外的下载统计信息。
curl https:
//www.gnu.org/gnu-org.html
代码语言:
JavaScript
(
javascript
)
将cURL输出保存到文件
我们可以使用将cURL命令的结果保存到一个文件中
-o
/
-O
选项。
-o
(小写o):结果将保存在命令行中提供的文件名中
-O
(大写O):将采用URL中的文件名,并将其用作存储结果的文件名
curl-o my-gettext.html https:
//www.gnu.org/software/gettext/manual/gettext.html
代码语言:
JavaScript
(
javascript
)
因此,页面
gettext.html
将保存在名为的文件中
my-gettext.html
。此外,你可以注意到
卷曲
与
-o
选项显示下载的进度表,如下所示。
当您使用cURL时
-O
,它将把名为“gettext.html”的文件中的内容保存在本地机器中。
curl-O http:
//www.gnu.org/software/gettext/manual/gettext.html
代码语言:
JavaScript
(
javascript
)
注意:何时
卷曲
必须将数据写入终端,它会禁用进度表以避免打印时出现混乱。我们可以使用
>
,
-o
,
-O
选项将结果移动到文件中。
隐藏进度条
默认情况下,cURL显示一个进度条。隐藏它
s
(
不说话的
)选项。
curl-s-O http:
//www.gnu.org/software/gettext/manual/gettext.html
代码语言:
JavaScript
(
javascript
)
如果由于某种原因,这在您的平台上不起作用,您可以始终将stderr重定向到
/dev/null
:
curl-O http:
//www.gnu.org/software/gettext/manual/gettext.html 2>/dev/null
代码语言:
JavaScript
(
javascript
)
一次获取多个文件
当然,通过在命令行中指定URL,我们可以在一次拍摄中下载多个文件。
curl-O https:
//www.gnu.org/software/gettext/manual/html_node/index.html-Ohttps://www.gnu.org/software/gettext/manual/gettext.html
代码语言:
JavaScript
(
javascript
)
使用-L选项遵循HTTP位置标头
然而,默认情况下,cURL不在HTTP位置头之后,也被称为重定向。当请求的网页被移动到另一个位置时,HTTP位置标头将作为响应发送,并且它将具有实际网页所在的位置。
我们可以使用
L
选项,如下所示。
curl-L https:
//www.google.com
代码语言:
JavaScript
(
javascript
)
继续/继续上一次下载
使用cURL
C
选项,您可以继续由于某种原因已经停止的下载。当您下载大文件,并且下载被中断时,这将很有帮助。
如果我们说
C
,则cURL将从何处开始恢复下载。我们也可以给出一个偏移
C
。对于源文件,将从一开始跳过给定的偏移字节。
使用开始大量下载
卷曲
,然后按
Ctrl-C
以在下载之间停止它。
curl-O https:
//www.gnu.org/software/gettext/manual/gettext.html
代码语言:
JavaScript
(
javascript
)
使用
卷曲-C-
,我们可以从之前的位置继续下载。
curl-C-O https:
//www.gnu.org/software/gettext/manual/gettext.html
代码语言:
JavaScript
(
javascript
)
使用带有或不带有身份验证的代理
如果您在proxy.yourdomain.com的8080端口上侦听代理服务器,请执行以下操作:
curl-x proxy.yourdomain.com:
8080
-U用户:密码-O https:
//www.gnu.org/software/gettext/manual/gettext.html
代码语言:
JavaScript
(
javascript
)
你可以跳过的地方
-U用户:密码
如果您的代理不需要身份验证。
查询HTTP标头
HTTP头允许远程web服务器发送关于其自身和实际请求的附加信息。此外,这还为客户端提供了有关如何处理请求的详细信息。
要从网站查询HTTP标头,请执行以下操作:
curl-I https:
//www.gnu.org
代码语言:
JavaScript
(
javascript
)
HTTP://1.1
200
好啊
日期
:2020年7月13日星期一21:22:32 GMT
服务器
:Apache/2.4.7
内容位置
:主页.html
变化
:协商,接受语言,接受编码
TCN
选择
严格的运输安全
:最大年龄=63072000
访问控制允许来源
无效的
接受范围
:字节
缓存控制
:最大年龄=0
到期
:2020年7月13日星期一21:22:32 GMT
内容类型
:text/html
内容语言
:en
代码语言:
超文本传输协议
(
http
)
将文件上载到FTP服务器
cURL还可以使用将文件上载到FTP服务器
T
选项
curl-u ftpuser:ftppass-T myfile.txt ftp:
//ftp.server.com
代码语言:
JavaScript
(
javascript
)
因此,上面的命令将上载名为
myfile.txt
到FTP服务器。您还可以使用范围操作同时上载多个文件。
curl-u ftpuser:ftpass-T
“{file1,file2}”
ftp:
//ftp.server.com
代码语言:
JavaScript
(
javascript
)
我们可以选择使用
.
从STDIN获取输入并将其传输到远程。
curl-u ftpuser:ftpass-T-ftp:
//ftp.server.com/mynewfile.txt
代码语言:
JavaScript
(
javascript
)
上面的命令将从Standard input获得用户的输入,并将内容保存在ftp服务器中的名称下
mynewfile.txt
.
您可以提供一个
T
对于每个URL,并且该对指定上传的位置。
从FTP服务器下载文件
cURL还可以用于从FTP服务器下载文件。但是,如果给定的FTP路径是一个目录,cURL将列出指定目录下的文件。
curl-u ftpuser:ftppass-O ftp:
//ftp_server/public_html/mysql.php
代码语言:
JavaScript
(
javascript
)
以上命令将下载
mysql.php
文件,并将其保存在本地目录中。
curl-u ftpuser:ftppass-O ftp:
//ftp_server/public_html/
代码语言:
JavaScript
(
javascript
)
这里,给定的URL指的是一个目录。因此cURL将列出给定URL下的所有文件和目录。
使用范围列出/下载
cURL支持在URL中给定的范围。当给定范围时,将下载该范围内匹配的文件。从FTP镜像站点下载软件包会很有帮助。
curl http:
//ftp.us.debian.org/debian/pool/main/[a-z]/
代码语言:
JavaScript
(
javascript
)
上面的命令将列出中的所有包
a-z
终端中的范围。
使用详细和跟踪选项的详细信息
您可以使用
v
选项此选项启用详细模式,并将打印详细信息。
curl-v https:
//www.gnu.org
代码语言:
JavaScript
(
javascript
)
about命令将输出以下内容:
尝试
209.51
.188
.148
:
443.
..
*连接至www.gnu.org(
209.51
.188
.148
港口城市
443
(
#0)
*ALPN,提供h2
*ALPN,提供http/
1.1
*成功设置证书验证位置:
*ca文件:/etc/ssl/certs/ca-certificates.crt
CA路径:无
*TLSv1
3.
(OUT)、TLS握手、客户端问候(
1.
):
*TLSv1
3.
(IN)、TLS握手、服务器问候(
2.
):
*TLSv1
2.
(IN)、TLS握手、证书(
11
):
*TLSv1
2.
(IN)、TLS握手、服务器密钥交换(
12
):
*TLSv1
2.
(IN),TLS握手,服务器已完成(
14
):
*TLSv1
2.
(OUT)、TLS握手、客户端密钥交换(
16
):
*TLSv1
2.
(OUT),TLS更改密码,更改密码规范(
1.
):
*TLSv1
2.
(OUT),TLS握手,已完成(
20
):
*TLSv1
2.
(IN),TLS握手,已完成(
20
):
*使用TLSv1的SSL连接
2.
/ECDHE-RSA-AES128-GCM-SHA256
*ALPN,服务器不同意协议
*服务器证书:
*主题:CN=emacs.org
*开始日期:六月
17
09
:
07
:
40
2020
GMT
*到期日期:9月
15
09
:
07
:
40
2020
GMT
*subjectAltName:主机
“www.gnu.org”
匹配的证书
的“www.gnu.org”
*发行人:C=US;O=Let'
s加密;CN=让
的加密权威X3
*SSL证书验证正常。
>获取HTTP://1.1
>主持人:www.gnu.org
>用户代理:curl/7.71.1
接受
>
*将bundle标记为不支持多用途
<HTTP://1.1 200 OK
<日期:2020年7月13日星期一21:56:04 GMT
<服务器:Apache/2.4.7
<内容位置:home.html
<Vary:协商,接受语言,接受编码
<TCN:选择
<严格的运输安全:最大年龄=63072000
<访问控制允许来源:(null)
<接受范围:字节
<缓存控制:最大年龄=0
<到期时间:2020年7月13日星期一21:56:04 GMT
<传输编码:分块
<内容类型:text.html
<内容语言:en
<
...
代码语言:
PHP
(
php
)
使用SMTP协议发送邮件
cURL也可以用于使用SMTP协议发送邮件。如下所示,您应该指定发件人地址、收件人地址和邮件服务器IP地址。
卷曲--邮件-
从…起
[电子邮件保护]--邮件rcpt[电子邮件保护]smtp:
//mailserver.com
代码语言:
JavaScript
(
javascript
)
一旦输入上述命令,它将等待用户将数据提供给邮件。因此,当您撰写消息时,请键入“
.
“(句点)作为最后一行,它将立即发送电子邮件。
HTTP/2支持检查
如果您有最新的cURL版本,您可以使用
--http2
选项,用于检查特定URL是否支持新的HTTP/2协议。因此,如果网站确实支持HTTP/2,您将看到
HTTP://2.0 200
在标头中而不是
HTTP://1.1 200
.
curl-I--http2 https:
//www.opensource.com
代码语言:
JavaScript
(
javascript
)
模拟HTTP方法
的
得到
方法用于从特定的URL检索资源。例如,简单的
卷曲https://www.gnu.org/
命令将使用
得到
作为默认的HTTP方法。但是,也可以使用指定
--请求GET
或者
-X获取
.
curl—请求GET https:
//www.gnu.org
代码语言:
JavaScript
(
javascript
)
的
岗位
该方法将信息发布到网络服务器(例如论坛上的评论)。这可以使用指定
--请求POST
或者
-X柱
.
curl—请求POST https:
//您的网站
代码语言:
JavaScript
(
javascript
)
DELETE方法从web服务器中删除与特定URL相关联的资源。这可以使用指定
--请求DELETE
或者
-X删除
.
curl—请求删除https:
//您的网站
代码语言:
JavaScript
(
javascript
)
的
PUT
方法基于客户端提交给web服务器的数据创建或替换资源。(例如,创建新网页或更新现有网页)。这可以使用指定
--请求PUT
或者
-X看跌
.
curl—请求PUT https:
//您的网站
代码语言:
JavaScript
(
javascript
)
以下命令将发送
动画1
和
动物2
参数及其相应的值,以
https://yourdomain.com/animals.php
curl—请求POST—数据
“animal1=猫&animal2=狗”
https:
//yourdomain.com/animals.php
代码语言:
JavaScript
(
javascript
)
您可以使用此技巧来模拟常规HTML表单的行为。
结论
我们解释了
卷曲
命令是。本文中的示例很简单,但它们展示了最常用的cURL用例,旨在帮助您了解
卷曲
命令在Linux上工作。
要了解更多关于cURL的信息,您可以访问该项目的网站。
延伸阅读:
Windows 记事本终于获得自动更正和拼写检查功能
在首次引入 Windows 大约 41 年后,记事本终于更新了自动更正和拼写检查功能。这家科技巨头于今年 3 月推出了拼...
Ubuntu 的 apt 和 apt-get 命令有什么区别?
在Ubuntu及其他基于Debian的Linux发行版中,软件包管理是系统维护的一个重要方面。apt和apt-get是两...
Ubuntu远程桌面:如何设置和连接
远程桌面是一种允许您远程接管和使用另一台计算机的服务。在Ubuntu中,可以在图形客户端机器上启用它来控制主机。此功能对...
苹果公司在“放开”iPad活动上宣布的4款产品(以及你错过了什么)
利用当天的视频 苹果2024年5月的“放开”活动标志着iPad系列的一个重要里程碑,该公司推出了自成立以来最重大的升级。...
将照片从iPhone传输到iPhone的8种快速方法
已升级到新iPhone,是否要从旧设备中移动所有照片?或者你只是想从别人的iPhone上转移照片?以下是在两部iPhon...