时间:2023-04-21 11:45:01 | 来源:网站运营
时间:2023-04-21 11:45:01 来源:网站运营
七个使用 wget 命令的技巧 | Linux 中国:用你的 Linux 终端中从互联网上下载文件。
wget
是一个下载网页文件的免费工具。它将互联网上的数据保存到一个文件或展示在终端上。实际上这也是像 Firefox 或 Chromium 这样的网页浏览器的工作原理。有一个区别是,网页浏览器默认将网页 渲染(render)在图形窗口中,并且通常需要用户主动来操作它们。而 wget
工具是无交互的使用方式,也就是说你可以使用脚本或定期使用 wget
来下载文件,不论你人是否在电脑面前。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:1946Connecting to example.com|93.184.216.34|:80... connected.HTTP request sent, awaiting response... 200 OKLength: 1256 (1.2K) [text/html]Saving to: 'index.html'
通过使用 --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
--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)。--debug
选项可以查看 wget
为每个请求发送了什么样的标头信息:$ wget --debug example.com---request begin---GET / HTTP/1.1User-Agent: Wget/1.19.5 (linux-gnu)Accept: */*Accept-Encoding: identityHost: example.comConnection: Keep-Alive---request end---
你可以使用 --header
选项修改请求标头。实际上经常使用这种方式来模仿某特定浏览器,来测试或兼容某些编码糟糕、只能与特定代理通信的站点。$ 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
--debug
选项来查看响应中的标头信息:$ wget --debug example.com[...]---response begin---HTTP/1.1 200 OKAccept-Ranges: bytesAge: 188102Cache-Control: max-age=604800Content-Type: text/html; charset=UTF-8Etag: "3147526947"Server: ECS (sab/574F)Vary: Accept-EncodingX-Cache: HITContent-Length: 1256---response end---200 OKRegistered socket 3 for persistent reuse.URI content encoding = 'UTF-8'Length: 1256 (1.2K) [text/html]Saving to: 'index.html'
wget
会默认跟随 重定向(redirect),这也是大部分情况下用户所希望的。--max-redirect
选项,用于控制 wget
默认处理 301 响应重定向的次数。设置为 0
意味着不会自动重定向到新的地址:$ wget --max-redirect 0 http://iana.org--2021-09-21 11:01:35-- http://iana.org/Resolving iana.org... 192.0.43.8, 2001:500:88:200::8Connecting to iana.org|192.0.43.8|:80... connected.HTTP request sent, awaiting response... 301 Moved PermanentlyLocation: https://www.iana.org/ [following]0 redirections exceeded.
同时,你也可以设置为其他的数值来控制 wget
能重定向多少次。--max-redirect
选项用于在实际访问之前查看 URL 缩写(shortened URL)非常有用。缩写 URL 可用于用户无法完整拷贝和粘贴一个长 URL 时的 印刷媒体(print media),或是具有字数限制的社交网络(在类似 Mastondon 这种现代开源的社交网络上这并不是一个问题)。这种缩写具有一定的风险,因为本质上这些目的地是隐藏的。组合使用 --head
选项和 --location
选项来来查看 HTTP 头部并解开最终的目的地,你可以在不加载整个资源的情况下查看到缩写 URL 的完整内容:$ wget --max-redirect 0 "https://bit.ly/2yDyS4T"--2021-09-21 11:32:04-- https://bit.ly/2yDyS4TResolving bit.ly... 67.199.248.10, 67.199.248.11Connecting to bit.ly|67.199.248.10|:443... connected.HTTP request sent, awaiting response... 301 Moved PermanentlyLocation: http://example.com/ [following]0 redirections exceeded.
从 Location
开始的倒数第二行输出,展示了实际的目的地。wget
可以快速高效的帮你获取互联网上的信息,而不用在图形界面上耗费精力。为了帮你将它构造在你平常的工作流中,我们创建了一个 wget
常用使用方式和语法清单,包括使用它来查询 API 的概述。在这里下载 Linux wget 速查表。关键词:技巧,中国,命令,使用