有什么区别 curl 和Wget?

curl 和 Wget 是 从 Linux 命令行向服务器发出请求的两个最常用的实用程序.

如果您发现自己在两者之间进行交换,其中一个只是激起了您的好奇心,或者您刚刚在网上看到过一些关于它的很好的旧讨论,那么了解一些可能会有所帮助的差异。

虽然您希望使用其中任何一种都能获得流畅的体验,但了解两者之间的基本差异将有助于您更好地掌握两者的使用(并希望从上述充满问题的讨论中解决任何问题)。

主要区别 curl 和 Wget:如何保存输出

最明显的区别 curl Wget 是默认情况下 Wget 将查询到的网页保存到系统中,而 curl 在终端输出中显示它但不保存它。

让我们从一个简单的开始 example 向 Arch Linux 的主页发出请求, https://archlinux.org.

我们将首先提出请求 curl.

curl 'https://archlinux.org'

注意如何 curl 命令输出网页的原始内容? 就像您单击 Web 浏览器上的查看源代码按钮一样。

Arch Linux 主页 curl
在网络浏览器中查看同一页面的源代码

让我们尝试使用 Wget 获取相同的网站:

wget 'https://archlinux.org'

看那个,Wget没有显示网页的内容 curl 做过。 但是如果Wget没有显示它,它放在哪里呢?

使用 wget 获取 Arch Linux 主页

这就是这两个程序之间的第一个主要区别所在。

默认情况下,Wget 将网站的内容放到一个名为 index.html

然后,您可以通过运行查看文件的实际内容 cat index.html,这将产生与您看到的相同的输出 curl 命令:

如果你想保存文件 curl,你必须使用 -o 选项:

curl -o <output_file> <web_URL>

其他显着差异

除此之外,这实际上几乎是您在使用时可能会注意到的唯一区别 curl 和 Wget。 虽然还有其他一些可能会引起您的兴趣,但它们可能不会对您作为最终用户使用任何一种工具产生太大影响(如果有的话)。

支持

curl 比 Wget 使用得更多,可用于手机、计算机(包括 Windows 和 macOS 等操作系统)等环境,甚至智能手表、智能冰箱和其他类似物品等物联网设备。

开发者使用

下一部分主要是开发人员关心的。 Curl 具有支持 C 等编程语言中的网络请求的库,而 wget 也是严格意义上的命令行,如果您需要从编程语言与其交互,则不会很好地工作。

部分原因与之前的原因有关,并有助于解释为什么 curl 广泛用于不同类型的环境和设备。

总结

就是这样! 希望您现在已经看到,两者之间的差异比某些人想象的要小得多。

如果您决定长期选择一种工具,我绝对会推荐 curl,它是我在自己的项目中使用的,而且它比 Wget 使用得更广泛。

想要在两者之间进行更全面的磨合吗? 查看 curl 与 Wget Daniel Stenberg 的文章( curl),这涉及到两个工具之间不同的一堆更高级的东西。