wget命令8種實(shí)用用法

大家好,我是良許。

wget 是一個(gè)可以從網(wǎng)絡(luò)上下載文件的免費(fèi)實(shí)用程序,它的工作原理是從 Internet 上獲取數(shù)據(jù),并將其保存到本地文件中或顯示在你的終端上。

這實(shí)際上也是大家所使用的瀏覽器所做的,例如 Firefox 或 Chrome,其實(shí)在內(nèi)部也是調(diào)用了 wget 程序進(jìn)行數(shù)據(jù)下載。

本文介紹 8 個(gè) wget 命令常見(jiàn)使用方式,希望對(duì)小伙伴們有所幫助。

1. 使用 wget 命令下載文件

你可以使用 wget 命令來(lái)下載指定鏈接的文件。默認(rèn)情況下,下載的文件將保存到當(dāng)前工作目錄中的同名文件中。

$ 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) [text/html]
Saving to: 'index.html'

如果你不想將下載的文件保存在本地,而只是想將其顯示在標(biāo)準(zhǔn)輸出(stdout)里,可以使用 --output-document 選項(xiàng),同時(shí)后面再跟上一個(gè) - 號(hào)。

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

如果你想給下載的文件重新命名,那么可以使用 --output-document 選項(xiàng)(或者更簡(jiǎn)便,直接使用 -O 即可):

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

2. 斷點(diǎn)續(xù)傳

如果你要下載的文件非常大,因?yàn)榫W(wǎng)絡(luò)的原因有可能出現(xiàn)一次性無(wú)法下載完全的情況。如果每次都要重新下載,那么都不知道要等到猴年馬月。

這種情況下,就可以使用 --continue 選項(xiàng)(或者 -c )實(shí)現(xiàn)斷點(diǎn)續(xù)傳。也就是說(shuō),如果因?yàn)楦鞣N原因?qū)е孪螺d中斷,使用了這個(gè)選項(xiàng),就可以繼續(xù)上次的下載,而不需要重新進(jìn)行下載。

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

3. 下載一系列文件

如果你下載的不是一個(gè)大文件,而是需要很多個(gè)小文件,那么 wget 命令也可以幫你輕松實(shí)現(xiàn)。

但是,這里還需要使用一些 bash 語(yǔ)法來(lái)實(shí)現(xiàn)目的。一般來(lái)講,這些文件的名稱(chēng)都有一定的規(guī)律,比如:file_1.txt,file_2.txt,file_3.txt,等等,那么你就需要使用這樣的命令:

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

4. 鏡像整個(gè)站點(diǎn)

如果你想對(duì)某個(gè)網(wǎng)站進(jìn)行整站下載,包括其目錄結(jié)構(gòu),那么你就需要使用 --mirror 選項(xiàng)。

這個(gè)選項(xiàng)等同于 --recursive --level inf --timestamping --no-remove-listing,這意味著它是無(wú)限遞歸的,因此你可以下載到指定域上的所有內(nèi)容。

如果你使用 wget 存檔站點(diǎn),那么這些選項(xiàng) --no-cookies --page-requisites --convert-links 也可用于確保每個(gè)頁(yè)面都是最新的、最完整的。

5. 修改 HTML 請(qǐng)求標(biāo)頭

學(xué)過(guò)網(wǎng)絡(luò)通訊的小伙伴都知道,HTTP 數(shù)據(jù)包里包含了非常多的元素。其中,HTTP 標(biāo)頭是數(shù)據(jù)包初始的組成部分。

當(dāng)你使用瀏覽器瀏覽網(wǎng)頁(yè)時(shí),你的瀏覽器會(huì)向服務(wù)器發(fā)送 HTTP 請(qǐng)求標(biāo)頭。具體發(fā)了些什么東西呢?可以使用 --debug 選項(xiàng)查看 wget 每次請(qǐng)求發(fā)送的標(biāo)頭信息:

$ 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 選項(xiàng)修改請(qǐng)求標(biāo)頭。為什么要這么做呢?其實(shí)有很多使用場(chǎng)景的。例如,有時(shí)候?yàn)榱藴y(cè)試,需要模擬特定的瀏覽器發(fā)出的請(qǐng)求。

比如,你想模擬 Edge 瀏覽器發(fā)出來(lái)的請(qǐng)求,可以這樣操作:

$ 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

除此之外,你還可以偽裝成特定的移動(dòng)設(shè)備(比如 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. 查看響應(yīng)標(biāo)頭

與瀏覽器請(qǐng)求發(fā)送標(biāo)頭信息的方式相同,標(biāo)頭信息也包含在響應(yīng)中。同樣地,你可以使用 --debug 選項(xiàng)查看響應(yīng)標(biāo)頭:

$ 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) [text/html]
Saving to: 'index.html'

7. 響應(yīng) 301 響應(yīng)

熟悉網(wǎng)絡(luò)協(xié)議的都知道,200 響應(yīng)碼意味著一切都按預(yù)期進(jìn)行。而 301 響應(yīng)則意味著 URL 已經(jīng)指向不同的網(wǎng)站。

這種情況下,如果你需要下載文件,那么就需要使用 wget 的重定向功能。所以,如果你遇到 301 響應(yīng)時(shí),就需要使用 --max-redirect 選項(xiàng)。

如果你不想要重定向,那么可以將 --max-redirect 設(shè)置為 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.

或者,你還可以將其設(shè)置為其他數(shù)字以控制 wget 跟隨的重定向數(shù)量。

8. 展開(kāi)短鏈接

有時(shí)候,我們需要將一個(gè)長(zhǎng)鏈接轉(zhuǎn)為短鏈接,例如在文本框里填寫(xiě)信息時(shí),有時(shí)候文本框?qū)ψ址L(zhǎng)度有限制,這時(shí)短鏈就可以大大減少字符數(shù)。

除了使用第三方平臺(tái),其實(shí)我們可以直接使用 wget 命令來(lái)將短鏈接還原為長(zhǎng)鏈接。這里依然使用 --max-redirect 選項(xiàng):

$ 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.

輸出的倒數(shù)第二行,在 Location 部分,后面你就看到了短鏈展開(kāi)之后的真面目。

最后,最近很多小伙伴找我要Linux學(xué)習(xí)路線圖,于是我根據(jù)自己的經(jīng)驗(yàn),利用業(yè)余時(shí)間熬夜肝了一個(gè)月,整理了一份電子書(shū)。無(wú)論你是面試還是自我提升,相信都會(huì)對(duì)你有幫助!

免費(fèi)送給大家,只求大家金指給我點(diǎn)個(gè)贊!

電子書(shū) | Linux開(kāi)發(fā)學(xué)習(xí)路線圖

也希望有小伙伴能加入我,把這份電子書(shū)做得更完美!

有收獲?希望老鐵們來(lái)個(gè)三連擊,給更多的人看到這篇文章

推薦閱讀:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Linux wget是一個(gè)下載文件的工具,它用在命令行下。對(duì)于Linux用戶(hù)是必不可少的工具,尤其對(duì)于網(wǎng)絡(luò)管理員,...
    土豆西瓜胡蘿卜閱讀 45,015評(píng)論 0 6
  • wget是一個(gè)下載文件的工具,它用在命令行下。對(duì)于Linux用戶(hù)是必不可少的工具,我們經(jīng)常要下載一些軟件或從遠(yuǎn)程服...
    辣辣不乖閱讀 1,228評(píng)論 0 1
  • 功能 wget 是一個(gè)從網(wǎng)絡(luò)上自動(dòng)下載文件的自由工具。它支持 HTTP , HTTPS 和 FTP 協(xié)議,可以使用...
    QuietHeart閱讀 942評(píng)論 0 1
  • 來(lái)自公眾號(hào):CU技術(shù)社區(qū) 在本教程中,我們將介紹Linux中的cURL命令。我們會(huì)給出一些示例來(lái)指導(dǎo)您了解這個(gè)強(qiáng)大...
    碼農(nóng)小光閱讀 722評(píng)論 0 12
  • 一 wget簡(jiǎn)介 wget是linux上的命令行的下載工具。這是一個(gè)GPL許可證下的自由軟件。wget支持HTTP...
    JeffYU閱讀 113,291評(píng)論 0 15

友情鏈接更多精彩內(nèi)容