Unix/Linux 的 curl + wget 指令使用
cURL 用來發送 HTTP 請求,學他就好不用學 wget,因為 curl 更多參數用法,輸出控制更方便,兩者空間也差不多,除此之外再請語言模型列出其他優點
- 支援更多 HTTP 方法與 header 操作
- 更適合與 RESTful API 互動
- 輸出格式更易控制
- 支援更多協定(如 SCP、SFTP 等)
- 內建 JSON payload 操作與 token header 更直觀
需要使用 wget 的情況在下方章節會說明。
常用參數
-O: 以遠端檔案名稱下載檔案-o: 指定下載檔案的本地檔名-C -: 續傳下載(從中斷處繼續)-H: 自訂 HTTP 標頭-X: 指定 HTTP 方法(如 GET、POST、PUT、DELETE 等)-d: 傳送資料(POST 請求的 body)
腳本安裝四劍客:
-f: HTTP 錯誤時直接失敗(不輸出內容)-s: 靜默模式,不顯示進度或錯誤訊息-S: 顯示錯誤訊息(需搭配-s使用)-L: 跟隨 HTTP 重定向
常用範例
發送請求
-
GET
curl https://example.com -
POST
curl -X POST -d "a=1&b=2" https://example.com -
加上標頭
curl -H "Authorization: Bearer TOKEN" -
送出 JSON
curl -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com
檔案下載
-
下載檔案
-Ocurl -O https://example.com/file.zip -
自訂檔名
-ocurl -o myfile.zip https://example.com/file.zip -
續傳
-C -curl -C - -O https://example.com/large.zip
腳本安裝四劍客
-fsSL 參數應該到處都看過,分別是以下用途
-f: HTTP 錯誤時直接失敗-s: 靜默模式-S: 顯示錯誤(需搭配-s)-L: 跟隨重定向
wget
wget 天生比較適合下載大檔案,因為他的續傳比較好用:
wget -c https://example.com/largefile.zip
除此之外功能都沒有 curl 好,他擁有的唯一一個 curl 沒有的功能就是遞迴下載網站:
-
下載離線版網站
wget -mpEk "url" -
遞迴下載網站資源,下載某目錄下所有
.zip檔案wget -r -np -l 1 -A zip http://example.com/download/
-r: 遞迴-np: 不往上層目錄走-l 1: 只遞 迴 1 層-A zip: 只下載副檔名為 zip 的檔案