用你的 Linux 终端中从互联网上下载文件。
wget
是一个下载网页文件的免费工具。它将互联网上的数据保存到一个文件或展示在终端上。实际上这也是像 Firefox 或 Chromium 这样的网页浏览器的工作原理。有一个区别是,网页浏览器默认将网页 渲染 render 在图形窗口中,并且通常需要用户主动来操作它们。而 wget
工具是无交互的使用方式,也就是说你可以使用脚本或定期使用 wget
来下载文件,不论你人是否在电脑面前。
使用 wget 下载文件
你可以通过提供一个特定 URL 的链接,用 wget
下载一个文件。如果你提供一个默认为 index.html
的 URL,那么就会下载该索引页。默认情况下,文件会被下载到你当前的工作目录,并保持原来的名字。
$ wget http://example.com
--2021-09-20 17:23:47-- http://example.com/
Resolving example.com... 93.184.216.34, 2606:2800:220:1:248:1893:25c8:1946
Connecting to example.com|93.184.216.34|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1256 (1.2K) [text/html]
Saving to: 'index.html'
通过使用 --output-document
和 -
符号,你可以指示 wget
将数据发送到 标准输出 stdout :
$ wget http://example.com --output-document - | head -n4
Example Domain
你可以使用 --output-document
选项(简写为 -O
)将下载文件命名为任何你想要的名称:
$ wget http://example.com --output-document foo.html
断点续传
如果你正在下载一个超大文件,你可能会遇到中断下载的情况。使用 --continue
(简写为 -c
),wget
可以确定从文件的哪个位置开始继续下载。也就是说,下次你在下载一个 4 GB 的 Linux 发行版 ISO 时,如果出现了错误导致中断,你不必重新从头开始。
$ wget --continue https://example.com/linux-distro.iso
下载一系列的文件
如果你要下载的不是单个大文件,而是一系列的文件,wget
也能提供很好的帮助。假如你知道要下载文件的路径以及文件名的通用范式,你可以使用 Bash 语法指示一个数字范围的起始和终点来表示这一系列文件名:
$ wget http://example.com/file_{1..4}.webp
镜像整个站点
使用 --mirror
选项你可以下载整个站点,包括它的目录结构。这与使用选项 --recursive --level inf --timestamping --no-remove-listing
的效果是一样的,该选项表明可以进行无限制的递归,得到你指定域下的所有内容。但你也可能会得到比预期多得多的内容,这取决于站点本身的老旧程度。
如果你正在使用 wget
来打包整个站点,选项 --no-cookies --page-requisites --convert-links
非常有用,它可以确保打包的站点是全新且完整的,站点副本或多或少是 自包含的 self-contained 。
修改 HTML 标头
在计算机发送的通信报