什么是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的信息,您可以访问该项目的网站。
Immich 1.99.0带来上传指标、优化等功能
在上一次发布1.98.0两周后,自托管的谷歌照片替代品Immich正式宣布在所有平台上推出其新标志——网络、移动和文档页面。 Immich新徽标。 此次更新是更广泛的v199.0版本的一部分,该版本引入了许多更新、错误修复和性能改进,旨在提升用户体验。 最新版本带来了各种值得注意的功能和增强: Web改进: 用户现在可以根据相册中的显示方向对照片和视频进行排序,从而提供了一种更直观的方式来组织他们
升级Debian 10 Buster到Debian 11 Bullseye:一个循序渐进的指南
2021年8月14日,经过两年多的开发,Debian项目终于发布了Debian 11 Bullseye的稳定版本。它具有许多新功能,因为此版本中的大多数软件都已更新。 此外,Debian 11将在未来五年内获得支持,就像任何其他Debian稳定版本一样。 但现在让我们关注如何从Debian 10 Buster升级到Debian 11 Bullseye。这个过程很简单,并且假设您在根帐户中运行。 1
6个原因为什么你的下一代iPad应该是蜂窝式的
苹果的iPad在过去几年里确实成长了。移动iPad可以让你将笔记本电脑的电源与智能手机的连接结合起来,而且这一切都装在一个超级便携的包装中。 它们不仅仅是Netflix机器。但是,无论你使用iPad是为了好玩还是为了生产力,选择蜂窝模式都可以让你的平板电脑变成一个无所不能、无处不在的设备。 很容易在Wi—Fi和移动iPad之间做出选择,所以以下是我们认为你的下一个iPad应该是移动iPad的六大原
Rhino Linux开发暂时暂停
Rhino Linux是一个相对较新的基于Ubuntu开发分支的发行版。但是,尽管它的根是Ubuntu,但你几乎找不到任何东西能让你想起Ubuntu的视觉标识或GUI工具。 相反,该发行版使用Xfce桌面环境作为基础来构建其独特的身份。由此,它开发了自己的桌面体验,名为Unicorn。 Rhino的另一个关键特性是它的滚动发布模型,它不断更新,而不是标准的发布周期。许多人觉得这些功能很有吸引力,信
Ubuntu仍然是我的最爱:2024年Linux Distros排名第一
这些年来,我使用了许多Linux发行版,有时甚至同时使用了不止一个。但是Ubuntu仍然是我的第一选择。我将解释为什么会这样,以及Ubuntu与其他主要发行版的比较。 1.Ubuntu Ubuntu已经存在了近20年,拥有很少Linux发行版所能拥有的那种长寿。Ubuntu的开发者Canonical一定在做正确的事情。 自2024年首次亮相以来,其创作者和粉丝们引用了 Ubuntu作为完美的初学者