在 Linux 上使用命令行从 URL 下载文件 - 使用 wget 或 curl
在 Linux 上通过命令行从 URL 下载文件的方法有很多种,其中两个最好的工具是 wget 和 curl。这两种工具都有其优点和缺点,具体取决于手头的下载任务。在本教程中,我们将向您展示如何使用这两个命令来执行任务。
从命令行下载文件对于没有 GUI 的服务器或仅在命令行上完成大部分任务并发现它比打开浏览器启动下载更快的 Linux 用户来说非常方便。其他用例包括一次下载多个文件或整个网站。我们还可以在 Bash 脚本中使用 curl
和 wget
命令。您将在下面的 Bash 脚本中看到如何使用这些命令。
在本教程中您将学习:
Wget 与 cURL
如何使用 wget 下载文件
如何使用 cURL 下载文件
Bash 脚本下载示例
Wget 与 cURL
有时人们对 wget 和 curl 之间的区别感到困惑,但实际上,它非常简单。造成混乱的原因是这两种工具都能够从命令行下载文件。但除了功能上的重叠之外,命令完全不同。它们都用于不同的(尽管相似)的事情。
但我们在这里学习如何从命令行下载文件。那么,哪种工具更适合这项工作呢?每个工具通常默认安装在任何 Linux 发行版上,因此它主要取决于用户的偏好。
Wget 可能有一点优势,因为它更直接且易于使用。 Wget 还可以递归下载。但curl 支持 FTP 和 HTTP 之外的更多协议,并且还支持上传数据。如您所知,它们各有各的优点。无论您决定使用哪一种,您都可以在自己的系统上使用下面的示例命令。
如何使用 wget 下载文件
Wget 使文件下载变得轻松而轻松。下载文件的基本语法非常简单:
$ wget http://example.com/file.tar
wget 命令显示的下载进度
尽管缺少 GUI,wget 仍为我们提供了大量有关下载的信息,包括下载进度、传输速度和预计完成时间。终端顶部附近的输出只是 wget 尝试连接到服务器以下载文件。当您在下载文件时遇到问题时,该输出可用于排除故障。
如何恢复中断的文件下载?
如果在使用 wget 命令行工具时由于任何原因文件下载被中断,您可以使用 -c 命令行选项恢复文件下载。
无需在命令中提供任何额外参数,wget 会将下载的文件保存到终端当前设置的任何目录中。如果要指定文件的保存位置,可以在命令中使用-O
(输出)选项。
$ wget http://example.com/file.tar -O /path/to/dir/file.tar
Wget 允许我们指定保存文件的位置
要查看 wget 的更多示例并了解它的其他功能,请查看我们的 wget 完整指南。
如何使用curl下载文件
Curl 是另一个用于从 URL 下载文件的强大实用程序。默认情况下,curl 会将文件下载到标准输出。如果您正在下载纯文本文件或将curl 命令通过管道传输到另一个工具,这可能没问题。但是如果你只是将文件下载到你的电脑上,你不希望curl向你的终端发送一堆乱码文本,所以你应该使用-o
(输出)选项命令。
$ curl http://example.com/file.tar -o /path/to/dir/file.tar
通过curl命令显示下载进度
这里的输出类似于 wget 的输出,其中我们显示当前下载速率、预计完成时间等。要查看更多 curl 示例并了解它的其他功能,请查看我们的关于 curl 的完整指南。
Bash 脚本下载示例
Wget 和curl 很容易包含在bash 脚本中。在这些示例中,我们将了解如何使用任一命令下载文本文档中的 URL 列表。
首先,让我们为 wget 创建一个下载 bash 脚本。您需要两个文件 - 一个名为 download.sh
,其中包含我们的 bash 脚本,另一个名为 urls.txt
,其中包含我们想要下载的文件的 URL 列表下载。每个 URL 都需要独占一行。
download.sh 内部:
#!/bin/bash
while read url; do
wget $url
done < urls.txt
在 urls.txt
中,放入文件列表:
http://example.com/file1.tar
http://example.com/file2.tar
http://example.com/file3.tar
该脚本将循环遍历我们的 URL 文件并为每一行执行 wget 命令。我们使这个脚本非常基本,但是您可以根据需要向 wget 命令添加任意数量的参数。
将 URL 列表编译到 urls.txt
并使用 nano 或您喜欢的文本编辑器将上述代码粘贴到 download.sh
后,授予文件执行权限并运行脚本:
$ chmod +x download.sh
$ ./download.sh
对于curl,您可以按照与上面完全相同的说明进行操作,但将wget 命令替换为curl,如下所示:
#!/bin/bash
while read url; do
curl $url -O
done < urls.txt
请注意,我们还在curl命令中附加了-O
(注意:O是大写的)选项,因此curl会将URL下载为文件并带有各自的名称。如果没有此选项,curl 会将文件下载到标准输出。
结束语
在本指南中,我们了解了两个可用于在 Linux 上下载 URL 的命令行工具:wget 和 curl。两者都非常适合这项工作,并且能够同样出色地完成任务。我们还了解了如何从 Bash 脚本下载文件。请务必在我们的网站上查看他们各自的完整指南,以了解这些强大工具的其他功能。