curl 和 Wget 有什么区别?
curl 和 Wget 是从 Linux 命令行向服务器发出请求的两个最常用的实用程序。
如果您发现自己在两者之间切换,其中一个只是激起了您的好奇心,或者您只是在网上看到过一些关于它的旧讨论,那么了解其中的一些差异可能会有所帮助。
虽然希望您能够顺利地使用其中任何一种,但了解两者之间的基本区别将有助于您更好地掌握使用两者(并且希望能够解决上述充满问题的讨论中的任何问题)。
curl 和 Wget 之间的主要区别:如何保存输出
curl 和 Wget 最明显的区别是,默认情况下 Wget 会将查询的网页保存到系统,而 curl 会在终端输出中显示它但不保存。
让我们从向 Arch Linux 主页发出请求的简单示例开始https://archlinux.org
。
我们首先使用 curl 发出请求。
curl 'https://archlinux.org'
注意到curl 命令如何输出网页的原始内容了吗?就像你点击了 Web 浏览器上的“查看源代码”按钮一样。
让我们尝试使用 Wget 获取同一个网站:
wget 'https://archlinux.org'
看看,Wget 没有像curl那样显示网页内容。但如果 Wget 没有显示,它把它放在哪里了?
这就是这两个程序之间的第一个主要区别。
默认情况下,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 的使用更为广泛。
想要更全面地了解这两者吗?请查看Daniel Stenberg(curl 的创建者)撰写的curl vs Wget文章,其中详细介绍了这两个工具之间的许多更高级的不同之处。