Linux curl/wget 下載檔案與發送網頁請求

在 Linux 上想要下載網路上的圖片或軟體包,沒有瀏覽器怎麼辦? 我們用 wgetcurl

wget:單純好用的下載器

wget 的用途很專一,就是下載檔案。它的特色是穩定,支援續傳。

1. 下載檔案

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

2. 下載並另存新檔 (-O)

注意是大寫 O (Output)。

wget -O new_name.zip https://example.com/file.zip

3. 背景下載 (-b)

檔案很大要抓很久?用 -b 讓它在背景跑。

wget -b https://example.com/big_iso_file.iso

4. 斷點續傳 (-c)

下載到一半網路斷線?別擔心,加上 -c (Continue) 就可以從中斷的地方繼續下載。

wget -c https://example.com/big_file.zip

curl:開發者的瑞士刀

curl (Client URL) 不只能下載檔案,更常用來測試網頁回應、發送 API 請求、檢查 Header。

1. 顯示網頁原始碼 (GET)

直接把網頁內容吐到螢幕上(stdout)。

curl https://google.com

2. 下載檔案因為 curl 預設是輸出到螢幕,要儲存成檔案必須用重導向 >-o (小寫)。

curl https://example.com/file.zip > file.zip
# 或者
curl -o file.zip https://example.com/file.zip

3. 檢查 Response Header (-I)

只想看 HTTP 狀態碼 (200, 404, 500) 或 Server 資訊,不想看整個網頁。

curl -I https://google.com

4. 測試 API (POST/PUT/DELETE)

對於後端工程師來說,curl 用來 Debug API 超方便。

# 發送 POST 請求與 JSON 資料
curl -X POST -H "Content-Type: application/json" -d '{"name":"miko"}' https://api.example.com/users

5. 其他實用參數

  • -L (Follow Redirects): 如果網址有 301/302 跳轉,curl 預設不會跟過去。加上 -L 它就會乖乖跟著跳轉。
  • -v (Verbose): 顯示詳細的連線過程、Handshake、Request/Response Header。除錯神器。
  • -u user:password: HTTP Basic Authentication 驗證。

處理 JSON 回傳值 (搭配 jq)

在呼叫 API 時,回傳通常是擠成一團的 JSON 字串,很難閱讀。 Linux 有一個超強大的工具叫 jq (需要額外安裝:sudo apt install jq),可以用來格式化與撈取 JSON 資料。

1. 格式化輸出 (Pretty Print)

讓 JSON 變得排版整齊、好讀。

curl https://api.github.com/users/octocat | jq

2. 撈取特定欄位

假設 API 回傳 {"name": "Miko", "id": 123},我只想要 name

curl https://api.example.com/user/1 | jq '.name'
# 輸出: "Miko"

3. 取出原始字串 (不帶引號)

預設 jq 會輸出帶有雙引號的字串 (JSON 格式)。如果你是要拿來給 Shell Script 用,通常不想要引號。

curl https://api.example.com/user/1 | jq -r '.name'
# 輸出: Miko