CodeGym /Adesua ahorow /Docker SELF /使用 `curl` 和 `wget` 下載文件

使用 `curl` 和 `wget` 下載文件

Docker SELF
等級 8 , 課堂 4
開放

使用 curlwget 下載文件

1. 認識 curl

有沒有碰過這樣的情況:在面試時,被要求透過終端下載一個檔案,但你愣住了,因為忘記怎麼操作?今天我們來學習如何使用 curlwget,它們可是處理網路數據的好幫手。

這些工具可以下載網頁、下載檔案、發送 HTTP 請求、操作 API,甚至執行自動化腳本。我們會詳細探討它們的功能、優勢以及典型使用場景。

curl 是個命令列工具,用來透過網路協議傳送數據。它的強大之處在於靈活性:支援超過 20 種協議(HTTP, HTTPS, FTP, SCP, SMTP 等)。開發者覺得這是一把「瑞士刀」,用於處理網路相關的問題。

curl 的基本語法

curl [選項] URL

簡單來說,輸入 curl 命令,加上地址,然後看結果就好。現在來了解一下具體操作。

下載網頁

假設你想下載 Google 的首頁,這麼做就行:

curl http://www.google.com

你會在螢幕上看到該頁面的 HTML 代碼。如果你希望研究網站結構,或者自動化跟網站有關的操作,這功能特別有用。

將內容保存到檔案

如果不希望整個文本流占據螢幕,可以將結果保存到檔案:

curl -o google.html http://www.google.com

使用 -o(output)標誌告訴 curl,我們希望將輸出結果導入檔案。現在頁面的 HTML 代碼已經保存到 google.html。想跟朋友開玩笑的話,可以把檔案給他們,然後說自己下載了「整個網路」。

下載檔案

假設你需要下載某個檔案(例如某個 .zip)。curl 在這裡特別便利:

curl -O http://example.com/file.zip

-o 不同,-O 標誌會使用 URL 中的原始檔案名稱來保存檔案。這對於從同一來源下載多個檔案時特別有用。

HTTP 驗證

有時候,訪問某個檔案或 API 資源需要登入帳號密碼。這時,可以用 curl 加上 -u 標誌:

curl -u username:password http://example.com/private-data

這功能對於操作像 GitHub 或 Docker Registry 這類的受保護 API 特別有用。

透過 API 進行下載

curl 最酷的功能之一就是操作 API。假設你需要向伺服器發送請求,並獲取 JSON 格式的回應數據:

curl -X GET "https://api.exchangerate-api.com/v4/latest/USD"

這裡的 -X 標誌指定了 HTTP 請求方法(GET, POST, DELETE 等)。這對於整合外部服務進行自動化操作,實在是個寶藏工具。


2. 什麼是 wget

如果 curl 是瑞士刀,那麼 wget 就是推土機。它的主要任務就是下載檔案。與 curl 的主要區別在於,wget 專為可靠地下載大型檔案而設計,並且支援下載續傳功能,在網路連線不穩的情況下非常方便。

基本的 wget 語法

wget [參數] URL

簡單下載檔案

wget http://example.com/file.zip

這個指令會下載檔案並用原始名稱儲存在當前目錄。簡單有效。

用另一個名稱儲存

如果你不喜歡檔案的原名稱,可以自行設定名稱:

wget -O newfile.zip http://example.com/file.zip

下載續傳

假設你在下載一個很大的檔案,但連線中斷。不用擔心,只需使用 -c (continue) 參數:

wget -c http://example.com/largefile.iso

wget 會從中斷的地方繼續下載。而且即使幾天後再試,只要伺服器支援這種模式,依然有效。

下載整個網站

沒錯,使用 wget 能下載整個網站(或它的副本)。只需使用 --mirror 參數:

wget --mirror http://example.com

這個指令會以保存目錄結構的方式下載網站。現在你就有一個網站的「鏡像」,可以在離線模式使用了。


3. 比較 curlwget

功能 curl wget
支援大量協議 僅支援 HTTP/HTTPS 和 FTP
自動續傳下載 否(可以用腳本實現)
操作 API
檔案管理的便利性 中等 非常好
下載整個網站

總的來說,如果你需要操作 API 或執行一些特定的任務,使用 curl。但如果你只是想下載檔案,wget 是更好的選擇。


4. 實際應用

下載與處理文件

結合 wget 和我們的文本文字處理技能:

wget -O data.txt http://example.com/data.txt
cat data.txt | grep "keyword" | awk '{print $2, $4}'

這裡,我們下載了一個文件,根據關鍵字篩選出行,然後提取了所需的列。

與 API 的交互

curl 下載匯率數據,並找到所需的貨幣:

curl -s "https://api.exchangerate-api.com/v4/latest/USD" | grep "EUR"

如果你想建立一套自動化的貨幣轉換系統,這會很有用。

更新自動化

想像一下,每天都需要下載文件更新。以下是簡單的腳本範例:

#!/bin/bash
wget -O updates.zip http://example.com/daily-updates.zip
unzip -o updates.zip -d /path/to/updates

保存腳本並將其添加到 cron。現在它會自動執行喔——是不是挺方便的?


5. 常見錯誤和特性

錯誤 403 (Forbidden):

此錯誤出現時通常是因為伺服器需要額外的標頭(例如 User-Agent)。可以這樣修復:

curl -A "Mozilla/5.0" http://example.com

重定向:

如果伺服器將你重定向到其他 URL,請在 curl 中加入參數 -L

curl -L http://example.com

SSL 錯誤:

有時候 wgetcurl 可能會報告 SSL 問題。可以關閉憑證檢查 (但這樣不安全!):

wget --no-check-certificate https://example.com
curl -k https://example.com

有了這套強大工具,你已準備好在終端中征服網路了。現在沒有任何文件或 API 能逃過你的掌握——是時候下載、處理並自動化啦!

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION