wget命令的八种实用用法

系统 Linux
wget 是一个可以从网络上下载文件的免费实用程序,它的工作原理是从 Internet 上获取数据,并将其保存到本地文件中或显示在你的终端上。

wget 是一个可以从网络上下载文件的免费实用程序,它的工作原理是从 Internet 上获取数据,并将其保存到本地文件中或显示在你的终端上。这实际上也是大家所使用的浏览器所做的,例如 Firefox 或 Chrome,其实在内部也是调用了 wget 程序进行数据下载。本文介绍 8 个 wget 命令常见使用方式,希望对小伙伴们有所帮助。

1. 使用 wget 命令下载文件

你可以使用 wget 命令来下载指定链接的文件。默认情况下,下载的文件将保存到当前工作目录中的同名文件中。 

  1. $ wget http://www.lxlinux.net 
  2. --2021-09-20 17:23:47-- http://www.lxlinux.net/ 
  3. Resolving www.lxlinux.net... 93.184.216.34, 2606:2800:220:1:248:1893:25c8:1946 
  4. Connecting to www.lxlinux.net|93.184.216.34|:80... connected. 
  5. HTTP request sent, awaiting response... 200 OK 
  6. Length: 1256 (1.2K) [text/html] 
  7. Saving to'index.html' 

如果你不想将下载的文件保存在本地,而只是想将其显示在标准输出(stdout)里,可以使用 --output-document 选项,同时后面再跟上一个 - 号。 

  1. $ wget http://www.lxlinux.net --output-document - | head -n4 
  2. <!doctype html> 
  3. <html> 
  4. <head> 
  5.    <title>Example Domain</title> 

如果你想给下载的文件重新命名,那么可以使用 --output-document 选项(或者更简便,直接使用 -O 即可): 

  1. $ wget http://www.lxlinux.net --output-document newfile.html 

2. 断点续传

如果你要下载的文件非常大,因为网络的原因有可能出现一次性无法下载完全的情况。如果每次都要重新下载,那么都不知道要等到猴年马月。这种情况下,就可以使用 --continue 选项(或者 -c )实现断点续传。也就是说,如果因为各种原因导致下载中断,使用了这个选项,就可以继续上次的下载,而不需要重新进行下载。 

  1. $ wget --continue https://www.lxlinux.net/linux-distro.iso 

3. 下载一系列文件

如果你下载的不是一个大文件,而是需要很多个小文件,那么 wget 命令也可以帮你轻松实现。但是,这里还需要使用一些 bash 语法来实现目的。一般来讲,这些文件的名称都有一定的规律,比如:file_1.txt,file_2.txt,file_3.txt,等等,那么你就需要使用这样的命令: 

  1. $ wget http://www.lxlinux.net/file_{1..4}.txt 

4. 镜像整个站点

如果你想对某个网站进行整站下载,包括其目录结构,那么你就需要使用 --mirror 选项。这个选项等同于 --recursive --level inf --timestamping --no-remove-listing,这意味着它是无限递归的,因此你可以下载到指定域上的所有内容。如果你使用 wget 存档站点,那么这些选项 --no-cookies --page-requisites --convert-links 也可用于确保每个页面都是最新的、最完整的。

5. 修改 HTML 请求标头

学过网络通讯的小伙伴都知道,HTTP 数据包里包含了非常多的元素。其中,HTTP 标头是数据包初始的组成部分。当你使用浏览器浏览网页时,你的浏览器会向服务器发送 HTTP 请求标头。具体发了些什么东西呢?可以使用 --debug 选项查看 wget 每次请求发送的标头信息: 

  1. $ wget --debug www.lxlinux.net 
  2. ---request begin--- 
  3. GET / HTTP/1.1 
  4. User-Agent: Wget/1.19.5 (linux-gnu) 
  5. Accept: */* 
  6. Accept-Encoding: identity 
  7. Host: www.lxlinux.net 
  8. Connection: Keep-Alive 
  9.  
  10. ---request end--- 

你可以使用 --header 选项修改请求标头。为什么要这么做呢?其实有很多使用场景的。例如,有时候为了测试,需要模拟特定的浏览器发出的请求。比如,你想模拟 Edge 浏览器发出来的请求,可以这样操作: 

  1. $ 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://www.lxlinux.net 

除此之外,你还可以伪装成特定的移动设备(比如 iPhone ): 

  1. $ wget --debug \ 
  2. --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" \ 
  3. HTTP:// www.lxlinux.net 

6. 查看响应标头

与浏览器请求发送标头信息的方式相同,标头信息也包含在响应中。同样地,你可以使用 --debug 选项查看响应标头: 

  1. $ wget --debug www.lxlinux.net 
  2. [...] 
  3. ---response begin--- 
  4. HTTP/1.1 200 OK 
  5. Accept-Ranges: bytes 
  6. Age: 188102 
  7. Cache-Control: max-age=604800 
  8. Content-Type: text/html; charset=UTF-8 
  9. Etag: "3147526947" 
  10. Server: ECS (sab/574F) 
  11. Vary: Accept-Encoding 
  12. X-Cache: HIT 
  13. Content-Length: 1256 
  14.  
  15. ---response end--- 
  16. 200 OK 
  17. Registered socket 3 for persistent reuse. 
  18. URI content encoding = 'UTF-8' 
  19. Length: 1256 (1.2K) [text/html] 
  20. Saving to'index.html' 

7. 响应 301 响应

熟悉网络协议的都知道,200 响应码意味着一切都按预期进行。而 301 响应则意味着 URL 已经指向不同的网站。这种情况下,如果你需要下载文件,那么就需要使用 wget 的重定向功能。所以,如果你遇到 301 响应时,就需要使用 --max-redirect 选项。如果你不想要重定向,那么可以将 --max-redirect 设置为 0 。 

  1. $ wget --max-redirect 0 http://www.lxlinux.net 
  2. --2021-09-21 11:01:35-- http://www.lxlinux.net/ 
  3. Resolving www.lxlinux.net... 192.0.43.8, 2001:500:88:200::8 
  4. Connecting to www.lxlinux.net|192.0.43.8|:80... connected. 
  5. HTTP request sent, awaiting response... 301 Moved Permanently 
  6. Location: https://www.www.lxlinux.net/ [following] 
  7. 0 redirections exceeded. 

或者,你还可以将其设置为其他数字以控制 wget 跟随的重定向数量。

8. 展开短链接

有时候,我们需要将一个长链接转为短链接,例如在文本框里填写信息时,有时候文本框对字符长度有限制,这时短链就可以大大减少字符数。除了使用第三方平台,其实我们可以直接使用 wget 命令来将短链接还原为长链接。这里依然使用 --max-redirect 选项: 

  1. $ wget --max-redirect 0 "https://bit.ly/2yDyS4T" 
  2. --2021-09-21 11:32:04-- https://bit.ly/2yDyS4T 
  3. Resolving bit.ly... 67.199.248.10, 67.199.248.11 
  4. Connecting to bit.ly|67.199.248.10|:443... connected. 
  5. HTTP request sent, awaiting response... 301 Moved Permanently 
  6. Location: http://www.lxlinux.net/ [following] 
  7. 0 redirections exceeded. 

输出的倒数第二行,在 Location 部分,后面你就看到了短链展开之后的真面目。 

 

责任编辑:庞桂玉 来源: 良许Linux
相关推荐

2013-12-12 17:14:10

Linuxvim

2020-07-06 07:37:58

Linux虚拟

2010-04-22 10:36:41

Oracle数据导入

2010-06-28 11:06:04

SQL Server

2022-05-10 08:08:01

find命令Linux

2021-03-31 08:00:00

开发工具游戏

2022-04-27 22:07:32

SQL数据库分页查询

2010-07-13 16:40:41

Perl引用

2021-11-22 12:13:54

Linuxwget 命令

2022-12-01 16:53:27

NPM技巧

2020-05-11 09:38:52

Python开发函数

2019-08-09 09:00:40

cp命令BashLinux

2020-02-27 15:20:27

ping命令运维

2010-07-20 13:53:44

Perl引用

2019-04-23 08:28:19

2010-02-04 15:17:48

Linux wget

2011-06-09 13:48:48

程序员

2010-04-12 16:12:07

Oracle HINT

2021-02-15 12:06:05

PythonSetDict

2010-07-16 13:45:41

Perl引用
点赞
收藏

51CTO技术栈公众号