什么是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的信息,您可以访问该项目的网站。
如何使用GParted轻松创建和调整分区大小
GParted(GNOME分区编辑器)是Linux中最著名的GUI分区管理工具之一。与其他广泛使用的Linux应用程序一样,它是一个免费的开源实用程序。用户界面很简单,可以完成任务。 GParted是用C++编写的,作为一个带有GUI的工具,它对任何人来说都相对容易使用。用户可以使用发行版的软件中心在最流行的Linux发行版上安装该应用程序。 然而,这里有一个关键的细节需要记住。与大多数分区管理器
开发人工智能?RHEL AI的开发者预览版在这里
近年来,人工智能已成为科技界的一个中心焦点,吸引了大量投资,并产生了非常有希望的结果。 大型科技公司正在努力打造自己的人工智能模型,这被广泛认为是塑造和推动技术未来的下一个重大技术突破。 有鉴于此,Red Hat提供了一个专门的人工智能模型开发平台,再次领先于其在企业Linux领域的竞争对手一步。这就是它的全部内容。 Red Hat今天宣布了其新产品Red Hat Enterprise Linux
最佳5个免费GIF记录器Linux
无论您是经验丰富的Linux用户还是刚刚开始您的旅程,使用GIF录制器都可以帮助您以引人入胜的动画形式将您的想法付诸实践。 因此,潜入Linux GIF录像机的世界,充分利用您的创作潜力,并用GIF的魔力增强您的多媒体项目。 1. GIMP GIMP,或GNU图像操纵程序是一个优秀的开源软件,以其多功能性和深度功能而闻名。虽然GIMP主要用作一个强大的图像编辑工具,但GIMP也提供了不同的功能来创
KDE neon 6.0现已上市,为每个人带来Plasma 6
在Plasma 6大发布后不到24小时,KDE neon 6.0就已经发布了,它将为期待体验最纯粹形式的稳定Plasma 6的所有人带来欢乐。但首先,让我们来谈谈发行版本身。 KDE Neon是由KDE团队基于最新的Ubuntu LTS版本开发的Linux发行版,但有一些变化。它通过提供最新的KDE软件而脱颖而出。 这意味着用户可以获得尖端的KDE体验,包括Plasma桌面环境、KDE应用程序和底
如何在Windows中更改监视器1和2
在Windows 10和11中,您可以重新排列连接到计算机的多个显示器,以反映其物理排列。同样,您也可以将任何监视器配置为主显示器。以下是如何更改显示器1和2的位置,以及如何在Windows多显示器设置中设置主显示器。 如何在Windows上更换监视器1和2 双显示器设置中的一个常见问题是,当您需要将鼠标光标移动到屏幕的错误一侧时,才能到达第二个显示器。您可以通过重新排列显示器以反映显示器的物理布