什么是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的信息,您可以访问该项目的网站。
DirectX 11与DirectX 12的区别是什么?应该使用哪一个?
DirectX 12于2015年与Windows 10一起发布。随着它的发布,微软的DirectX 12为游戏玩家和游戏开发商开创了一个新时代。DirectX 12能够在提高GPU性能的同时减少CPU开销,很快就名声大噪。 然而,提高性能真的像从DirectX 11切换到DirectX 12一样简单吗?让我们看看DirectX 11和12之间的区别。 什么是微软的DirectX? 如中所述 我们对
最简单的方法来了解你的CPU是否正在堵塞你的电脑
在电脑中查找瓶颈通常很耗时,但如果你知道要查找哪些参数,你可以在几分钟内确定罪魁祸首。下面,我们将教您检查CPU是否堵塞电脑的最简单方法。 使用MSI Afterburner监控您的GPU使用情况 MSI加力器是其中之一 最好的GPU超频软件 但你问,为什么我建议用它来监控你的GPU使用情况? MSI Afterburner配备了RivaTuner统计服务器(RTSS),可以轻松监控硬件统计数据,
三个新的闪闪发光2024.02滚动特别版发布
SparkyLinux是一个基于Debian测试分支的通用Linux发行版,以其轻量级而闻名,是新旧硬件的绝佳选择。 在Sparky主要滚动发布更新后不到一周,发行版推出了基于Debian测试“Trixie”分支的特别GameOver、Multimedia和Rescue 2024.02半滚动版本。让我们深入了解最新情况。 Sparky 2024.02特别版亮点 截至2024年2月17日,Spark
Windows 11控制面板缺少关键设置,以下是查找它们的位置
自从推出Windows 11以来,微软就更加积极主动地将控制面板中的设置从传统的家中移出。如果你错过了一个场景,这里是你可能找到它的地方。 控制面板可能会脱落 多年来,甚至可以追溯到Windows 95时代,控制面板是您与Windows设置交互的主要方式。偶尔,您可能需要深入设备管理器应用程序,或者——如果情况真的很严重——打开注册表编辑器,但通常情况下,这些都在控制面板中。 在最近几个版本的wi
如何在Linux中将目录添加到PATH中[附示例]
一般来说,您在Linux系统上运行的大多数程序都能完美地工作,并且您的shell在执行时不会出现任何错误。但是,有时您可能希望从Linux系统上的非标准目录中快速运行自定义脚本或程序。 在这种情况下,您需要将它们的源目录添加到shell的PATH变量中,以便它知道在哪里可以找到它们。 PATH环境变量的用途是什么? 环境变量控制外壳的行为。例如,如果您在Linux上使用命令行,系统将依赖PATH变