cURL可以做的10件事

Posted shenzs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cURL可以做的10件事相关的知识,希望对你有一定的参考价值。

1。获取天气报告

如果有人告诉您从终端检查天气,您可能会看到一些无聊的数字。

curl http://wttr.in/LOCATION

技术图片

该信息由名为wego的CLI应用程序提供,但如果如果您不想安装它,则cURL可以从其Web前端wttr.in获取预测。它所需要的只是您要进行预测的位置。只需输入城市名称,其机场代码或您当前的IP地址即可。如果您键入以下内容,一项新功能将显示有关月相的信息:

curl wttr.in/Moon

技术图片

2。下载文件并继续下载

下载文件是我们通常在浏览器中执行的操作。有时您会想要使用下载管理器;例如,一次下载多个文件时,或者您要暂停下载时。尽管cURL并不是同时下载的流行选择(建议使用wget),但您仍然可以通过结合使用其强大的选项(开关)来将其用于此目的。首先,您需要直接链接到文件。在此示例中,我们将使用Linux Voice杂志的PDF。

curl -O -C-https://www.linuxvoice.com/issues/016/Linux-Voice- Issue-016.pdf

大写的O开关(-O)使cURL使用默认文件名(通常是链接本身中的文件名)保存文件。如果要使用其他名称保存它,可以使用小写字母o,后跟新名称:

curl -o magazine.pdf -C-https://www.linuxvoice。 com / issues / 016 / Linux-Voice-Issue-016.pdf

默认情况下,文件保存在当前目录中(请使用 pwd 进行检查)命令)。要将它们保存在其他位置,请在-o开关后提供路径。 -C –开关使cURL可以恢复下载。您可以通过在终端中按Ctrl + C来暂停它,然后再次运行相同的下载命令来恢复:

技术图片

cURL以表格形式显示下载进度,其中包含有关下载信息的列速度,文件总大小,经过时间等。如果您不喜欢这样做,可以通过在cURL命令中添加-#或–progress-bar来选择更简单的进度栏。

要一次下载多个文件,只需一个接一个地列出链接:

curl -O file1.txt -O file2.pdf -O file3.zip

借助其他命令行工具,我们可以批量处理从Tumblr博客下载所有PNG和JPG图片:

curl http://concept-art.tumblr.com/ | grep -o‘src =“ [^"] *。[png-jpg]“‘| cut -d " -f2 |同时阅读卷曲“ $ l" -o“ $ {l ## * /}";完成

在这种情况下, cut  grep 会收集有关文件名的信息并将其格式化,以便仅显示具有指定扩展名的文件。如果您运行的命令没有最后一个管道:

curl http://concept-art.tumblr.com/ | grep -o‘src =“ [^"] *。[png-jpg]“‘| cut -d " -f2

您将只获得满足以下条件的文件列表我们的标准,但实际上不会下载它们。如果博客使用标准分页,则cURL可以从一系列页面中获取图像列表:

curl http://concept-art.tumblr.com/page/[1-7 ] | grep -o‘src =“ [^"] *。[png-jpg]“‘| cut -d " -f2

您可以通过更改正方形数字来修改范围括号。同样,此命令将仅列出图像;要下载它们,请在要保存图像的目录中运行完整命令:

curl http://concept-art.tumblr.com/page/[1-7] | grep -o‘src =“ [^"] *。[png-jpg]“‘| cut -d " -f2 |同时阅读卷曲“ $ l" -o“ $ {l ## * /}";完成

如果您精通正则表达式,则可以改善此命令的外观和效率,并在注释中共享结果。

3。在FTP服务器上管理文件

这些天我们对FTP的了解很少,但这并不意味着它已经过时。实际上,许多开源项目和Linux发行版在FTP服务器上共享其软件。由于cURL支持FTP,因此您可以将其用作简单的FTP客户端来上传和下载文件。您可以通过访问以下目录浏览FTP服务器上的文件:

curl ftp://ftp.debian.org/debian/

输入一个子目录,键入其名称,后跟一个正斜杠(/)。

技术图片

下载文件与上一节中描述的HTTP下载类似。如果要暂停下载,可以使用-o或-O,并添加-C。

curl -O ftp://ftp.heanet.ie/mirrors/linuxmint.com /stable/17.3/linuxmint-17.3-kde-64bit.iso

尽管cURL不支持递归下载(请记住,wget可以!),它仍然可以在以下位置下载一系列文件一旦。唯一的条件是文件名遵循模式。例如,我们可以从墙纸托管服务器下载所有墙纸都命名为“ wallpaperNUMBER"的文件:

curl -O ftp://ftp.myserver.com/files/wallpaper[0 -120] .jpg

某些FTP服务器需要身份验证才能下载文件。 cURL使您可以使用-u(用户)选项登录:

curl -u用户名:密码-O ftp://ftp.protectedserver.com/files/example.txt

您还可以使用-T(传输)选项将文件上传到FTP服务器:

curl -u用户名:密码-T / home / user / Documents /test.txt ftp://ftp.myserver.com

在这里,您还可以将多个文件定义为一个范围。有时将此功能称为“ globbing"。如果文件名不遵循模式,只需将它们列出在大括号内( -T“ {file1.txt,image27.jpg}" )。相反,如果它们具有相似的名称,请应用Tumblr下载示例中的相同逻辑,并使用方括号( -T“ photo [1-50] .jpg" )。如果文件不在当前目录中,请确保提供文件的完整路径。

4。检查网站是否关闭

我们都去过那里。您绝对需要的网站突然停止工作。然后Facebook将无法加载。面对真正的第一世界问题,您该怎么办?

您可以搜索它,请一位朋友为您测试一下,或者使用可以告诉您某个网站是否为单一网站的其中一个网站下。或者,您可以启动终端并运行cURL:

curl-是https://www.twitter.com -L | grep HTTP /

大写的我切换(-I)检查网页的HTTP标头,并添加了-L(位置)选项以使cURL跟随重定向。这意味着您无需输入完整的Facebook URL;只需编写 facebook.com ,由于使用-L,cURL将负责其余的工作。如果有任何重定向,它们将以其自己的HTTP状态显示。

技术图片

我们感兴趣的消息是“ 200 OK",这表示网站一切正常。如果确实出现故障,您会看到类似以下内容的信息:

技术图片

HTTP状态代码仅在您理解它们的情况下提供信息。此方法并不完全可靠,因为网站可能会返回指示成功处理请求的状态代码,但是当您在浏览器中将其打开时它将为空。不过,在大多数情况下,它应该与实际情况相符,并让您知道发生了什么事-或下降了。

5。展开缩短的网址

缩短的网址并不是天生的坏习惯。没有它们,将很难在Twitter上共享链接(或者更糟的东西)。如果您出于任何原因对缩短的网址感到怀疑,则cURL可以帮助您进行扩展,并找出导致该网址的确切原因:

curl -sIL http://buff.ly/1lTcZSM | grep ^ Location;

curl -sI http://buff.ly/1lTcZSM | sed -n‘s / Location:* // p‘;

技术图片

您可以将cURL与 grep  sed 结合使用;主要区别在于格式。 Sed是每个Linux用户都应该知道的工具之一,并且在此和其他一些用例中对cURL进行了补充。别忘了cURL可以从缩短的URL下载文件(前提是该URL实际上指向文件):

curl -L -o filename.txt http://short.url < / code>

语法与其他cURL下载的语法相同,并且-L选项负责从缩短的URL到原始URL的重定向。

6。表现出对ASCII艺术的欣赏

诚然,这不是特别有用,但看起来很酷。借助于 pv (一种用于监视数据进度的实用程序),cURL可以在终端中显示ASCII动画。

curl -s http://artscene.textfiles .com / vt100 / wineglas.vt | pv -L9600 -q

技术图片

-s和-q选项可将两个命令保持为静默(安静)模式。这里的-L选项是指pv命令,它允许您修改数据传输速率(以字节/秒为单位)。换句话说,如果动画移动得太快或太慢,请尝试使用该数字播放。除了动画之外,cURL还可以显示普通的静态ASCII艺术作品:

技术图片

Web上有很多网站,其中包含各种ASCII艺术作品:从惊人的详细,高质量作品到怪异,愚蠢和甚至NSFW材料。这种数字艺术技术可以追溯到1960年代,如今已成为互联网文化和历史的一部分。您可以用它来装饰终端机或恶作剧您的朋友-随便漂浮什么。

7。在社交媒体上进行实验

从终端上使用社交媒体并不是什么新鲜事-我们已经向您展示了Linux的命令行Twitter客户端。您会注意到,从技术上讲,cURL并不是自己完成的;

技术图片

对于Twitter来说,以前可以使用cURL从终端直接管理它。然后Twitter更改了API,现在Twitter有一个特殊的cURL客户端,称为Twurl。这不是最容易使用的东西,尤其是对于初学者而言,它需要通过Twitter广告平台进行身份验证。如果您是开发人员或高级用户,这很有意义,但是如果您只想从命令行进行推文,那么就没有太大意义。尽管如此,仍有一些方法可以使Twitter变得有趣。您可以使用cURL检查用户的关注者数量:

curl -s https://twitter.com/username | grep -o‘[0-9,] *关注者‘;

技术图片

8。查找您的外部IP地址

查找本地IP地址很容易-只需运行 ifconfig 或咨询您的网络管理小程序。对于外部IP,大多数人使用专门的网站来获取此信息。尽管如此,对于cURL命令,某些事情仍然可以从终端更轻松地完成。有几种与cURL合作的在线服务:

curl ipinfo.io
curl -s https://4.ifcfg.me
curl -s http:// whatismyip .akamai.com
curl ifconfig.me
curl -s icanhazip.com

有些人可以告诉您有关任何外部IP地址的更多信息:

< code> curl ipinfo.io/207.46.13.41
curl ifconfig.me/207.46.13.41

技术图片

您要做的就是选择一项服务。如果您犹豫不决,只需将它们全部包含在别名中,作为备份解决方案。

9。粘贴文本和共享图像

中断工作流程永远不会提高工作效率和注意力。如果您在终端中完成大部分工作,那么即使不烦恼,切换到浏览器以共享几个文件也是不切实际的。幸运的是,一些粘贴和文件共享服务是与cURL一起使用的,因此您可以在终端上直接使用它们,而无需用户帐户。

Clbin和Sprunge.us具有相似的语法。使用Clbin,您可以通过管道传输本地文件或命令的输出,并返回到您上传的文本的链接:

cat textfile.txt | curl -F‘clbin = <-‘https://clbin.com

它还支持图片上传(PNG,JPG和GIF):

curl -F‘clbin=@image.png‘https://clbin.com

如果要使用Sprunge.us,请键入:

<代码> cat textfile.txt | curl -F‘sprunge = <-‘http://sprunge.us

Sprunge.us目前不支持图片上传。

Ix.io是基于与前两项服务相同的原理,并具有一些额外的功能。要上传文件,请输入:

cat file.txt | curl -F‘f:1 = <-‘ix.io

curl -F‘f:1=@file.txt‘ix .io

获得上载文本的链接后,您可以修改其URL以显示语法突出显示(使用 ix.io/yourpaste +  ix.io/yourpaste / ,或 ix.io/yourpaste/language (针对特定脚本或编程语言)。通过修改‘read:1‘值之后的数字,也可以限制查看链接的次数:

cat file.txt | curl -F‘f:1 = <-‘-F‘read:1 = 2‘ix.io

Ix.io主要用于基于文本的文件,例如源代码或系统日志。如果要上载各种文件格式,请使用Transfer.sh。它支持图像,文件加密,并使文件在线两个星期。您最多可以将5 GB的数据上传到Transfer.sh。方法如下:

curl --upload-file bunnies.jpg https://transfer.sh/bunnies.jpg

您可以自由定义上传文件的名称。要上传多个文件,请使用-F选项依次列出它们:

curl -i -F filedata=@/tmp/hello.txt -F filedata = @ / tmp / hello2 .txt https://transfer.sh/

10。如果您愿意深入研究与电子邮件相关的协议(SMTP,POP,IMAP)的详细信息,请在GMail上选中“未读邮件"

在cURL中有很大的解锁潜力。为了快速检查电子邮件,将执行此命令。它解析您的GMail提要,并使用 tr  awk  sed 和/或 grep <格式化输出(电子邮件主题和发件人) / code>命令。请注意,此解决方案非常不安全,因为它会将您的登录凭据公开给有权访问您终端的任何人。第一个版本显示发件人的姓名,第二个版本仅显示未读的电子邮件主题:

curl -u用户名:密码--silent“ https://mail.google.com/mail/feed / atom" | tr -d‘ n‘| awk -F‘‘‘{for(i = 2; i <= NF; i ++){print $ i}}‘‘| sed -n“ s / <标题> (。* )< / title。* name> (。* )< / name>。* / 2- 1 / p" < / entry>


curl -u用户名:密码--silent“ https://mail.google.com/mail/feed/atom" | grep -oPm1“(?<=)[^ <] +" | sed‘1d‘

技术图片

cURL还可以做什么?

cURL很少用作独立命令。大多数人将其用作脚本或应用程序的一部分。不过,正如我们在此处演示的那样,仍然可以使用cURL创建实用的单行代码。其中许多示例都是从CommandLineFu改编而来的,CommandLineFu是一种出色的智能命令行hack来源,您不应认为它们是一成不变的。

有了足够的知识和经验,我们可以修改每个命令,对其进行不同的格式化,或将其完全替换为更好的解决方案。 您可以改善建议的cURL命令吗?您知道cURL还有其他不错的用法吗?在评论中分享您的技巧。

以上是关于cURL可以做的10件事的主要内容,如果未能解决你的问题,请参考以下文章

postman 自动生成 curl 代码片段

空指针异常 - 片段活动

安装 Kali Linux 之后要做的10件事

有啥方法可以让 curl 连接并让我在输入时输入和发送身体片段?

第六章.解决大问题

成为程序员前需要做的10件事