【Linux 基础】Linux 中优雅地使用 wget 命令
转载自:《Linux 中国----七个使用 wget 命令的技巧》
wget
是一个下载网页文件的免费工具。它将互联网上的数据保存到一个文件或展示在终端上。实际上这也是像 Firefox 或 Chromium 这样的网页浏览器的工作原理。有一个区别是,网页浏览器默认将网页 渲染(render)在图形窗口中,并且通常需要用户主动来操作它们。而 wget
工具是无交互的使用方式,也就是说你可以使用脚本或定期使用 wget
来下载文件,不论你人是否在电脑面前。
目录:
- 基本功能:使用 wget 下载文件
- 技巧1:断点续传下载
- 技巧2:下载一系列的文件
- 技巧3:镜像整个站点
- 扩展功能:使用 wget 查看HTTP请求
- 技巧: 修改HTTP请求表头
基本功能:使用 wget 下载文件
你可以通过提供一个特定 URL 的链接,用 wget
下载一个文件。如果你提供一个默认为 index.html
的 URL,那么就会下载该索引页。默认情况下,文件会被下载到你当前的工作目录,并保持原来的名字。
$ wget http://example.com
通过使用 --output-document
和 -
符号,你可以指示 wget
将数据发送到 标准输出(stdout):
$ wget http://example.com --output-document - | head -n4
<!doctype html>
<html>
<head>
<title>Example Domain</title>
你可以使用 --output-document
选项(简写为 -O
)将下载文件命名为任何你想要的名称:
$ wget http://example.com --output-document foo.html
技巧1:断点续传下载
如果你正在下载一个超大文件,你可能会遇到中断下载的情况。使用 --continue
(简写为 -c
),wget
可以确定从文件的哪个位置开始继续下载。也就是说,下次你在下载一个 4 GB 的 Linux 发行版 ISO 时,如果出现了错误导致中断,你不必重新从头开始。
$ wget --continue https://example.com/linux-distro.iso
技巧2:下载一系列的文件
如果你要下载的不是单个大文件,而是一系列的文件,wget
也能提供很好的帮助。假如你知道要下载文件的路径以及文件名的通用范式,你可以使用 Bash 语法指示一个数字范围的起始和终点来表示这一系列文件名:
$ wget http://example.com/file_{1..4}.webp
技巧3:镜像整个站点
使用 --mirror
选项你可以下载整个站点,包括它的目录结构。这与使用选项 --recursive --level inf --timestamping --no-remove-listing
的效果是一样的,该选项表明可以进行无限制的递归,得到你指定域下的所有内容。但你也可能会得到比预期多得多的内容,这取决于站点本身的老旧程度。
如果你正在使用 wget
来打包整个站点,选项 --no-cookies --page-requisites --convert-links
非常有用,它可以确保打包的站点是全新且完整的,站点副本或多或少是 自包含的(self-contained)。
扩展功能:使用 wget 查看HTTP请求
在计算机发送的通信报文里含有大量用于数据交换的 元数据(metadata)。HTTP 标头是初始数据的组成部分。当你浏览某个站点时,你的浏览器会发送 HTTP 请求标头。使用 --debug
选项可以查看 wget
为每个请求发送了什么样的标头信息:
$ wget --debug example.com
---request begin---
GET / HTTP/1.1
User-Agent: Wget/1.19.5 (linux-gnu)
Accept: */*
Accept-Encoding: identity
Host: example.com
Connection: Keep-Alive
---request end---
技巧:修改HTTP请求表头
你可以使用 --header
选项修改请求标头。实际上经常使用这种方式来模仿某特定浏览器,来测试或兼容某些编码糟糕、只能与特定代理通信的站点。
让请求被识别为来自 Windows 系统的 Microsoft Edge:
$ wget --debug --header="User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.59" http://example.com
你也可以假装为某个移动设备:
$ wget --debug --header="User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Mobile/15E148 Safari/604.1" http://example.com
使用 wget
若你开始考虑使用单个命令来实现整个网站访问的过程,wget
可以快速高效的帮你获取互联网上的信息,而不用在图形界面上耗费精力。为了帮你将它构造在你平常的工作流中,我们创建了一个 wget
常用使用方式和语法清单,包括使用它来查询 API 的概述。在这里下载 Linux wget 速查表。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南