如何安裝 curl:全方位指南與實用技巧
「天啊!我今天想測試一個 API,但是輸入 `curl` 指令時,竟然出現『找不到指令』的錯誤訊息!這可怎麼辦才好?」相信不少剛接觸網路開發或需要進行伺服器除錯的朋友,都可能遇到過類似的困擾。別擔心,這篇文章就是為了解決「如何安裝 curl」這個問題而誕生的。我們將一步一步帶你認識 curl,並詳細說明如何在不同作業系統上輕鬆安裝它,讓你往後能順暢地運用這個強大的網路傳輸工具。
Table of Contents
curl 是什麼?為什麼需要它?
首先,我們得先了解 curl 到底是什麼。curl,全名是 “Client URL”,它是一個非常實用的命令列工具,專門用來在各種網路協定下傳輸資料。簡單來說,它就像是你電腦裡的一個小郵差,可以幫你從網路上(伺服器)「寄」或「收」資料。它支援非常多種協議,像是 HTTP、HTTPS、FTP、SFTP、IMAP、POP3,甚至是 SCP 等等,功能相當廣泛。
為什麼你會需要 curl 呢?原因很多!
- API 測試與開發: 無論你是正在開發一個新的 Web API,還是需要測試現有的 API 是否正常運作,curl 都是你的首選工具。你可以用它來發送各種 HTTP 請求,例如 GET、POST、PUT、DELETE,並觀察伺服器的回應。
- 網頁爬蟲與資料抓取: 雖然有一些更專業的爬蟲工具,但對於簡單的網頁內容抓取,curl 就能派上用場。
- 檔案下載: 你可以利用 curl 非常方便地從網路上下載檔案,甚至可以設定斷點續傳。
- 伺服器狀態檢查: 簡單地 ping 一下網站或服務是否正常,curl 也能幫你做到。
- 腳本自動化: 在撰寫 Shell Script 時,curl 可以整合進腳本中,實現許多自動化的網路操作。
我自己就曾經遇過一個狀況,有個外部服務提供的 API 常常不穩定,我需要一個方法快速地檢查它的回應狀態。起初我試著用瀏覽器,但太過麻煩。後來我學會用 curl,只要一行指令,就能立刻知道 API 是否在回應,回應的狀態碼又是什麼,省了我超多時間!
macOS 如何安裝 curl?
好消息!對於 macOS 使用者來說,curl 通常是「開箱即用」的!
1. 檢查是否已安裝:
打開「終端機」(Terminal) 應用程式(你可以在「應用程式」>「工具程式」裡找到它),然後輸入以下指令並按下 Enter:
curl --version
如果你的 macOS 已經安裝了 curl,你就會看到類似以下的輸出:
curl 7.64.1 (x86_64-apple-darwin18.5.0) libcurl/7.64.1 zlib/1.10.9
Release-Date: 2019-04-11
Protocols: dict file ftp ftps gopher http https imap pop3 rtmp rtsp scp sftp smb smtp smups pop3s telnet tftp
Features: AsynchDNS IPv6 Largefile NTLM NTLM_WB SSL TLS-SNI UnixSockets
(版本號和詳細資訊可能會因你的 macOS 版本而略有不同。)
2. 如果沒有安裝 (極少見):
在 macOS 上,curl 幾乎是系統內建的。除非你進行了非常極端的系統修改,否則不太可能沒有。但萬一真的不幸,最常見的安裝方式是透過 Homebrew 這個套件管理工具。
安裝 Homebrew (如果還沒有):
在終端機輸入:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
按照螢幕上的指示完成安裝。
安裝 curl:
Homebrew 安裝完成後,輸入:
brew install curl
Windows 如何安裝 curl?
Windows 上的 curl 安裝過程比 macOS 稍微複雜一點,但也是相當直觀的。
1. Windows 10 (21H1 及以上版本) 與 Windows 11:
好消息!從 Windows 10 版本 21H1 開始,curl 已經被內建到 Windows 中了!
檢查方式:
開啟「命令提示字元」(Command Prompt) 或「PowerShell」,輸入:
curl --version
如果看到版本資訊,恭喜你,可以直接使用!
2. 舊版 Windows (Windows 10 21H1 以前的版本) 或希望安裝最新版:
如果你使用的 Windows 版本較舊,或者你總是追求最新的功能,那麼你需要手動下載安裝。
步驟一:前往 curl 官方下載頁面
請瀏覽 curl for Windows 這個網址。
步驟二:選擇適合的版本
你會看到幾個選項,通常建議下載 **”Generic”** 版本。在 **”64-bit”** 或 **”32-bit”** 之間選擇,取決於你的 Windows 是 64 位元還是 32 位元系統(大部分現代電腦都是 64 位元)。
下載的檔案通常是 `.zip` 格式的壓縮包。
步驟三:解壓縮檔案
將下載的 `.zip` 檔案解壓縮到一個你方便管理的位置。建議可以建立一個資料夾,例如 `C:\Program Files\curl`,然後將解壓縮出來的所有檔案(包含 `curl.exe`)都放在裡面。
步驟四:將 curl 加入系統的 PATH 環境變數
這是最關鍵的一步,目的是讓你在任何地方都能直接輸入 `curl` 指令而無需切換到 curl 的安裝目錄。
- 在 Windows 搜尋欄輸入「環境變數」,然後選擇「編輯系統環境變數」。
- 在「系統內容」視窗中,點選右下角的「環境變數」按鈕。
- 在「系統變數」清單中,找到名為 `Path` 的變數,然後點選「編輯」。
- 在「編輯環境變數」視窗中,點選「新增」。
- 輸入你剛剛解壓縮 curl 的完整路徑。例如,如果你將 curl 放在 `C:\Program Files\curl`,就輸入這個路徑。
- 點選「確定」關閉所有開啟的視窗。
步驟五:驗證安裝
請關閉所有已開啟的命令提示字元或 PowerShell 視窗,然後重新開啟一個新的。再輸入:
curl --version
如果一切順利,你應該能看到 curl 的版本資訊。
提醒: 如果你下載的是 SSL 版本(通常是 libcurl),解壓縮後裡面會有 `curl.exe`。如果你下載的是包含 `libcurl.dll` 的版本,請確保 `curl.exe` 和 `libcurl.dll` 都在同一個資料夾,並且這個資料夾被加入到 PATH 中。
Linux 如何安裝 curl?
對於 Linux 使用者來說,curl 也是一個非常基礎且常用的工具,通常預設就會安裝。
1. 檢查是否已安裝:
打開你的終端機,輸入:
curl --version
如果看到版本資訊,那麼 curl 已經在你的系統上了!
2. 使用套件管理器安裝:
如果你的系統上沒有 curl,那麼就需要透過你的 Linux 發行版所使用的套件管理器來安裝。
- Debian/Ubuntu 及其衍生版 (使用 apt):
- Fedora/CentOS/RHEL 及其衍生版 (使用 dnf 或 yum):
- Arch Linux 及其衍生版 (使用 pacman):
sudo apt update
sudo apt install curl
如果你使用較新版本的 Fedora,請用 `dnf`:
sudo dnf install curl
如果你使用 CentOS 或較舊的 RHEL/Fedora,請用 `yum`:
sudo yum install curl
sudo pacman -Syu curl
安裝完成後,一樣再次執行 `curl –version` 來確認。
curl 的基本用法與常見參數
安裝好 curl 之後,最令人期待的當然就是實際使用了!這裡我們先介紹幾個最常用、最基礎的用法,幫助你快速上手。
1. 獲取網頁內容 (GET 請求)
這是最常見的用法,用來下載網頁的 HTML 程式碼。
curl https://www.example.com
執行後,你應該會在終端機看到 example.com 的 HTML 原始碼被印出來。
2. 儲存下載內容到檔案
如果你不想讓下載的內容直接顯示在螢幕上,而是想儲存成檔案,可以使用 `-o` 或 `-O` 參數。
- `-o filename`: 將下載的內容儲存到指定的 `filename`。
- `-O`: 根據 URL 的最後一部分來命名檔案。
curl -o example.html https://www.example.com
這會在當前目錄下產生一個 `example.html` 檔案,裡面包含 example.com 的內容。
curl -O https://curl.se/download/curl-8.3.0.tar.gz
這會下載 `curl-8.3.0.tar.gz` 這個檔案,並將它儲存成同名檔案在當前目錄。
3. 發送 POST 請求
當你需要向伺服器提交資料時,例如登入表單或提交 API 參數,就需要使用 POST 請求。通常會搭配 `-X POST` 和 `-d` 參數。
curl -X POST -d "key1=value1&key2=value2" https://api.example.com/submit
在這個例子中,我們向 `https://api.example.com/submit` 這個 URL 發送了一個 POST 請求,並帶上了 `key1=value1&key2=value2` 這樣的資料。
4. 設定請求標頭 (Headers)
有時候,你需要自訂請求標頭,例如 `Content-Type` 或 `Authorization`。這時候就使用 `-H` 參數。
curl -H "Content-Type: application/json" -H "Authorization: Bearer YOUR_TOKEN" https://api.example.com/data
這會發送一個請求,並在標頭中加入 `Content-Type` 為 `application/json`,以及一個 `Authorization` 標頭。
5. 顯示請求的詳細資訊 (Verbose)
如果你想了解 curl 在傳輸過程中做了哪些事情,例如連線的細節、請求和回應的標頭,可以使用 `-v` 參數。
curl -v https://www.example.com
這會輸出非常詳細的資訊,對於除錯非常有用。
常見問題與詳細解答
安裝和使用 curl 的過程中,可能會遇到一些常見的疑問,我們在此一一為大家解答。
Q1:為什麼我輸入 `curl` 指令會出現「找不到指令」或「command not found」?
A1: 這個錯誤訊息通常表示你的系統找不到 `curl` 這個可執行檔。這最可能的原因是:
- curl 未正確安裝: 尤其是在 Windows 上,如果你沒有將 curl 的安裝路徑加入到系統的 PATH 環境變數,系統就不知道去哪裡找 `curl.exe`。請務必仔細檢查你 Windows 安裝部分的步驟四。
- 環境變數未重新載入: 在 Windows 或 Linux 上修改了 PATH 環境變數後,通常需要關閉再重新開啟終端機或命令提示字元視窗,變數才會生效。
- 安裝路徑錯誤: 檢查你將 curl 解壓縮或安裝到的目錄是否正確,以及這個目錄是否確實被加到了 PATH 中。
- Linux 下的套件管理問題: 如果是 Linux,可能是套件管理器沒有正確安裝 curl,或者安裝過程中出現了錯誤。嘗試重新執行對應發行版的安裝指令。
我的經驗是: 在 Windows 上,最常犯的錯誤就是修改了 PATH 後,忘記重新開啟 CMD 或 PowerShell。當我發現怎麼都找不到指令時,重新開啟一個新視窗,然後 `curl –version` 就順利跑出來了!
Q2:curl 如何下載大檔案?會不會中斷?
A2: curl 在下載大檔案時表現相當不錯,它本身就支援斷點續傳的功能,但需要配合伺服器端也支援。
如何實現斷點續傳?
- 使用 `-C -` 參數: 這個參數告訴 curl 在下載中斷後,嘗試從上次中斷的地方繼續下載。
curl -C - -O https://example.com/largefile.zip
假設你的網路突然斷線,導致 `largefile.zip` 沒有下載完整。下次你再次執行這個指令時,curl 會檢查本地的 `largefile.zip` 檔案大小,並嘗試從伺服器那裡請求剩餘的部分,而不是從頭開始下載。
重要提示: 斷點續傳的功能是否有效,還取決於伺服器端是否支援 `Range` 請求標頭,大多數現代 Web 伺服器都支援。
Q3:curl 和瀏覽器有什麼不同?
A3: 這是個很棒的問題!雖然兩者都能用來存取網頁,但它們的用途和行為有很大的不同:
- 介面: 瀏覽器是圖形化介面 (GUI),使用者可以直觀地看到網頁的排版、圖片、連結等。curl 則是命令列介面 (CLI),它的輸出通常是純文字,像是 HTML 原始碼、JSON 資料或錯誤訊息。
- 功能: 瀏覽器的主要目的是「呈現」網頁給使用者閱讀。而 curl 的主要目的是「傳輸」資料,它可以進行各種協議的傳輸,並且可以非常精確地控制請求的細節(如請求方法、標頭、請求體等)。
- 自動化: curl 非常適合用於撰寫腳本、自動化任務,因為它可以被整合到 Shell Script 或其他程式語言中。瀏覽器則難以進行這種層級的自動化。
- 除錯: 在開發 Web API 或診斷網路問題時,curl 提供了一個非常強大的除錯工具,能夠讓你看到底層的請求和回應,這是在瀏覽器中難以做到的。
總結來說,瀏覽器是給「人」看的,而 curl 更多是給「程式」或「開發者」來進行資料交換和測試的。我個人認為,了解 curl 對於任何一位網路工作者來說,都是一項非常寶貴的技能!
Q4:curl 的 `-X` 參數是什麼意思?
A4: `-X` 參數,或者說 `–request`,是用來指定 HTTP 請求方法的。預設情況下,curl 會發送一個 `GET` 請求。但有時候你需要發送其他方法,例如:
- `GET`: 獲取資源。
- `POST`: 提交資料到伺服器,通常用於建立新資源或執行某個動作。
- `PUT`: 更新或建立資源。
- `DELETE`: 刪除資源。
- `HEAD`: 僅獲取 HTTP 標頭,不包含回應主體,用於檢查資源是否存在或取得其元資料。
- `OPTIONS`: 獲取目標資源所支援的 HTTP 方法。
例如,如果你要發送一個 `PUT` 請求,你會這樣做:
curl -X PUT -d '{"name":"new value"}' https://api.example.com/resource/123
這裡 `-X PUT` 就明確指定了要使用 PUT 方法。
Curl 的強大之處就在於,它讓你能夠精確地模擬各種 HTTP 請求,這對於理解 Web 應用程式的運作原理至關重要。

