Linux Shell指令碼編程--wget 命令用法詳解

來源:互聯網
上載者:User

Linux Shell指令碼入門--wget 命令用法詳解

wget是在Linux下開發的開放原始碼的軟體,作者是Hrvoje Niksic,後來被移植到包括Windows在內的各個平台上。它有以下功能和特點:
(1)支援斷點下傳功能;這一點,也是網路螞蟻和FlashGet當年最大的賣點,現在,Wget也可以使用此功能,那些網路不是太好的使用者可以放心了;
(2)同時支援FTP和HTTP下載方式;儘管現在大部分軟體可以使用HTTP方式下載,但是,有些時候,仍然需要使用FTP方式下載軟體;
(3)支援Proxy 伺服器;對安全強度很高的系統而言,一般不會將自己的系統直接暴露在互連網上,所以,支援代理是下載軟體必須有的功能;
(4)設定方便簡單;可能,習慣圖形介面的使用者已經不是太習慣命令列了,但是,命令列在設定上其實有更多的優點,最少,滑鼠可以少點很多次,也不要擔心是否錯點滑鼠;
(5)程式小,完全免費;程式小可以考慮不計,因為現在的硬碟實在太大了;完全免費就不得不考慮了,即使網路上有很多所謂的免費軟體,但是,這些軟體的廣告卻不是我們喜歡的;

wget雖然功能強大,但是使用起來還是比較簡單的,基本的文法是:wget [參數列表] URL。下面就結合具體的例子來說明一下wget的用法。
1、下載整個http或者ftp網站。
wget http://place.your.url/here
這個命令可以將http://place.your.url/here 首頁下載下來。使用-x會強制建立伺服器上一模一樣的目錄,如果使用-nd參數,那麼伺服器上下載的所有內容都會加到本地目前的目錄。

wget -r http://place.your.url/here
這 個命令會按照遞迴的方法,下載伺服器上所有的目錄和檔案,實質就是下載整個網站。這個命令一定要小心使用,因為在下載的時候,被下載網站指向的所有地址同 樣會被下載,因此,如果這個網站引用了其他網站,那麼被引用的網站也會被下載下來!基於這個原因,這個參數不常用。可以用-l number參數來指定下載的層次。例如只下載兩層,那麼使用-l 2。

要是您想製作鏡像網站,那麼可以使用-m參數,例如:wget -m http://place.your.url/here
這時wget會自動判斷合適的參數來製作鏡像網站。此時,wget會登入到伺服器上,讀入robots.txt並按robots.txt的規定來執行。

2、斷點續傳。
當檔案特別大或者網路特別慢的時候,往往一個檔案還沒有下載完,串連就已經被切斷,此時就需要斷點續傳。wget的斷點續傳是自動的,只需要使用-c參數,例如:
wget -c http://the.url.of/incomplete/file
使用斷點續傳要求伺服器支援斷點續傳。-t參數表示重試次數,例如需要重試100次,那麼就寫-t 100,如果設成-t 0,那麼表示無窮次重試,直到串連成功。-T參數表示逾時等待時間,例如-T 120,表示等待120秒串連不上就算逾時。

3、批量下載。
如果有多個檔案需要下載,那麼可以產生一個檔案,把每個檔案的URL寫一行,例如組建檔案download.txt,然後用命令:wget -i download.txt
這樣就會把download.txt裡面列出的每個URL都下載下來。(如果列的是檔案就下載檔案,如果列的是網站,那麼下載首頁)

4、選擇性的下載。
可以指定讓wget只下載一類檔案,或者不下載什麼檔案。例如:
wget -m –reject=gif http://target.web.site/subdirectory
表示下載http://target.web.site/subdirectory,但是忽略gif檔案。–accept=LIST 可以接受的檔案類型,–reject=LIST拒絕接受的檔案類型。

5、密碼和認證。
wget只能處理利用使用者名稱/密碼方式限制訪問的網站,可以利用兩個參數:
–http-user=USER設定HTTP使用者
–http-passwd=PASS設定HTTP密碼
對於需要認證做認證的網站,就只能利用其他下載工具了,例如curl。

6、利用Proxy 伺服器進行下載。
如果使用者的網路需要經過Proxy 伺服器,那麼可以讓wget通過Proxy 伺服器進行檔案的下載。此時需要在目前使用者的目錄下建立一個.wgetrc檔案。檔案中可以設定Proxy 伺服器:
http-proxy = 111.111.111.111:8080
ftp-proxy = 111.111.111.111:8080
分別表示http的Proxy 伺服器和ftp的Proxy 伺服器。如果Proxy 伺服器要求輸入密碼則使用:
–proxy-user=USER設定代理使用者
–proxy-passwd=PASS設定代理密碼
這兩個參數。
使用參數–proxy=on/off 使用或者關閉代理。
wget還有很多有用的功能,需要使用者去挖掘。

代碼總表:

●啟動:-V, --version 顯示wget的版本後退出-h, --help 列印文法協助-b, --background 啟動後轉入後台執行-e, --execute=COMMAND 執行`.wgetrc'格式的命令,wgetrc格式參見/etc/wgetrc或~/.wgetrcwget預設會根據網站的robots.txt進行操作 使用-e robots=off參數即可繞過該限制●記錄和輸入檔案:-o, --output-file=FILE 把記錄寫到FILE檔案中-a, --append-output=FILE 把記錄追加到FILE檔案中-d, --debug 列印調試輸出-q, --quiet 安靜模式(沒有輸出)-v, --verbose 冗長模式(這是預設設定)-nv, --non-verbose 關掉冗長模式,但不是安靜模式 -i, --input-file=FILE 下載在FILE檔案中出現的URLs-F, --force-html 把輸入檔案當作HTML格式檔案對待-B, --base=URL 將URL作為在-F -i參數指定的檔案中出現的相對連結的首碼--sslcertfile=FILE 可選用戶端認證--sslcertkey=KEYFILE 可選用戶端認證的KEYFILE--egd-file=FILE 指定EGD socket的檔案名稱●下載:--bind-address=ADDRESS 指定本地使用地址(主機名稱或IP,當本地有多個IP或名字時使用) -t, --tries=NUMBER 設定最大嘗試連結次數(0 表示無限制).-O --output-document=FILE 把文檔寫到FILE檔案中-nc, --no-clobber 不要覆蓋存在的檔案或使用.#首碼 -c, --continue 接著下載沒下載完的檔案--progress=TYPE 設定進程條標記 -N, --timestamping 不要重新下載檔案除非比本地檔案新-S, --server-response 列印伺服器的回應--spider 不下載任何東西 -T, --timeout=SECONDS 設定響應逾時的秒數-w, --wait=SECONDS 兩次嘗試之間間隔SECONDS秒--waitretry=SECONDS 在重新連結之間等待1...SECONDS秒--random-wait 在下載之間等待0...2*WAIT秒-Y, --proxy=on/off 開啟或關閉代理-Q, --quota=NUMBER 設定下載的容量限制--limit-rate=RATE 限定下載輸率●目錄:-nd --no-directories 不建立目錄 -x, --force-directories 強制建立目錄 -nH, --no-host-directories 不建立主機目錄-P, --directory-prefix=PREFIX 將檔案儲存到目錄 PREFIX/...--cut-dirs=NUMBER 忽略 NUMBER層遠程目錄 eg: wget  -q -N -x -nH --timeout=10 --tries=3 -i "newlists"●HTTP 選項:--http-user=USER 設定HTTP使用者名稱為 USER.--http-passwd=PASS 設定http密碼為 PASS.-C, --cache=on/off 允許/不允許伺服器端的資料緩衝 (一般情況下允許).-E, --html-extension 將所有text/html文檔以.html副檔名儲存--ignore-length 忽略 `Content-Length'頭域--header=STRING 在headers中插入字串 STRING--proxy-user=USER 設定代理的使用者名稱為 USER--proxy-passwd=PASS 設定代理的密碼為 PASS--referer=URL 在HTTP請求中包含 `Referer: URL'頭-s, --save-headers 儲存HTTP頭到檔案-U, --user-agent=AGENT 設定代理的名稱為 AGENT而不是 Wget/VERSION.--no-http-keep-alive 關閉 HTTP活動連結 (永遠連結).--cookies=off 不使用 cookies.--load-cookies=FILE 在開始會話前從檔案 FILE中載入cookie--save-cookies=FILE 在會話結束後將 cookies儲存到 FILE檔案中●FTP 選項:-nr, --dont-remove-listing 不移走 `.listing'檔案-g, --glob=on/off 開啟或關閉檔案名稱的 globbing機制--passive-ftp 使用被動傳輸模式 (預設值).--active-ftp 使用主動傳輸模式--retr-symlinks 在遞迴的時候,將連結指向檔案(而不是目錄)●遞迴下載:-r, --recursive 遞迴下載--慎用!-l, --level=NUMBER 最大遞迴深度 (inf 或 0 代表無窮).--delete-after 在現在完畢後局部刪除檔案-k, --convert-links 轉換非相對連結為相對連結-K, --backup-converted 在轉換檔X之前,將之備份為 X.orig-m, --mirror 等價於 -r -N -l inf -nr.-p, --page-requisites 下載顯示HTML檔案的所有圖片●遞迴下載中的包含和不包含(accept/reject):-A, --accept=LIST 分號分隔的被接受副檔名的列表-R, --reject=LIST 分號分隔的不被接受的副檔名的列表-D, --domains=LIST 分號分隔的被接受域的列表--exclude-domains=LIST 分號分隔的不被公認的網域的列表--follow-ftp 跟蹤HTML文檔中的FTP連結--follow-tags=LIST 分號分隔的被跟蹤的HTML標籤的列表-G, --ignore-tags=LIST 分號分隔的被忽略的HTML標籤的列表-H, --span-hosts 當遞迴時轉到外部主機-L, --relative 僅僅跟蹤相對連結-I, --include-directories=LIST 允許目錄的列表-X, --exclude-directories=LIST 不被包含目錄的列表-np, --no-parent 不要追溯到父目錄

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.