乐趣区

关于java:wget命令8种实用用法

大家好,我是良许。

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

这实际上也是大家所应用的浏览器所做的,例如 Firefox 或 Chrome,其实在外部也是调用了 wget 程序进行数据下载。

本文介绍 8 个 wget 命令常见应用形式,心愿对小伙伴们有所帮忙。

1. 应用 wget 命令下载文件

你能够应用 wget 命令来下载指定链接的文件。默认状况下,下载的文件将保留到当前工作目录中的同名文件中。

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

如果你不想将下载的文件保留在本地,而只是想将其显示在规范输入(stdout)里,能够应用 --output-document 选项,同时前面再跟上一个 - 号。

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

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

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

2. 断点续传

如果你要下载的文件十分大,因为网络的起因有可能呈现一次性无奈下载齐全的状况。如果每次都要从新下载,那么都不晓得要等到猴年马月。

这种状况下,就能够应用 --continue 选项(或者 -c)实现断点续传。也就是说,如果因为各种起因导致下载中断,应用了这个选项,就能够持续上次的下载,而不须要从新进行下载。

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

3. 下载一系列文件

如果你下载的不是一个大文件,而是须要很多个小文件,那么 wget 命令也能够帮你轻松实现。

然而,这里还须要应用一些 bash 语法来实现目标。一般来讲,这些文件的名称都有肯定的法则,比方:file_1.txt,file_2.txt,file_3.txt,等等,那么你就须要应用这样的命令:

$ 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 每次申请发送的标头信息:

$ wget --debug www.lxlinux.net
---request begin---
GET / HTTP/1.1
User-Agent: Wget/1.19.5 (linux-gnu)
Accept: */*
Accept-Encoding: identity
Host: www.lxlinux.net
Connection: Keep-Alive

---request end---

你能够应用 --header 选项批改申请标头。为什么要这么做呢?其实有很多应用场景的。例如,有时候为了测试,须要模仿特定的浏览器收回的申请。

比方,你想模仿 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://www.lxlinux.net

除此之外,你还能够伪装成特定的挪动设施(比方 iPhone):

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

6. 查看响应标头

与浏览器申请发送标头信息的形式雷同,标头信息也蕴含在响应中。同样地,你能够应用 --debug 选项查看响应标头:

$ wget --debug www.lxlinux.net
[...]
---response begin---
HTTP/1.1 200 OK
Accept-Ranges: bytes
Age: 188102
Cache-Control: max-age=604800
Content-Type: text/html; charset=UTF-8
Etag: "3147526947"
Server: ECS (sab/574F)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 1256

---response end---
200 OK
Registered socket 3 for persistent reuse.
URI content encoding = 'UTF-8'
Length: 1256 (1.2K) 
Saving to: 'index.html'

7. 响应 301 响应

相熟网络协议的都晓得,200 响应码意味着所有都按预期进行。而 301 响应则意味着 URL 曾经指向不同的网站。

这种状况下,如果你须要下载文件,那么就须要应用 wget 的重定向性能。所以,如果你遇到 301 响应时,就须要应用 --max-redirect 选项。

如果你不想要重定向,那么能够将 --max-redirect 设置为 0。

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

或者,你还能够将其设置为其余数字以管制 wget 追随的重定向数量。

8. 开展短链接

有时候,咱们须要将一个长链接转为短链接,例如在文本框里填写信息时,有时候文本框对字符长度有限度,这时短链就能够大大减少字符数。

除了应用第三方平台,其实咱们能够间接应用 wget 命令来将短链接还原为长链接。这里仍然应用 --max-redirect 选项:

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

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

最初,最近很多小伙伴找我要 Linux 学习路线图 ,于是我依据本人的教训,利用业余时间熬夜肝了一个月,整顿了一份电子书。无论你是面试还是自我晋升,置信都会对你有帮忙!

收费送给大家,只求大家金指给我点个赞!

电子书 | Linux 开发学习路线图

也心愿有小伙伴能退出我,把这份电子书做得更完满!

有播种?心愿老铁们来个三连击,给更多的人看到这篇文章

举荐浏览:

  • 干货 | 程序员进阶架构师必备资源免费送
  • 书单 | 程序员必读经典书单(高清 PDF 版)
退出移动版