跳至內容
出自 Arch Linux 中文维基

cURL 是一個命令行工具和庫,用於使用 URL 傳輸數據。該命令支持多種不同的協議,包括 HTTP、HTTPS、FTPSCP 和 SFTP。它還可以在沒有用戶交互的情況下工作,比如在腳本中。

注意:儘管表面上等同於 wget,但事實並非如此。請參閱 Can_I_do_recursive_fetches_with運行與給定 wget 命令對應的 curl 命令What_is_curl_not

安裝

提示:一般情況下,cURL 已作為 pacman 等軟體包的依賴而被安裝。

安裝 curl 軟體包。

用法

下載

cURL 的常見用例是將資源下載到指定文件:

$ curl --output 文件名 URL

如果 URL 包含文件名,則可以直接將資源保存為該文件名:

$ curl --remote-name URL

同樣,你也可以使用 -J/--remote-header-name 來接受來自 HTTP 伺服器(來自 Content-Disposition 頭信息)的文件名提示。當與 -O/--remote-name 結合使用時,如果 HTTP 伺服器沒有返回文件名提示,curl 將使用 URL 指定的文件名。

您也可以省略輸出選項,將資源列印到 stdout:

$ curl URL

HTTP POST

您可以使用 cURL 發送 HTTP POST 請求:

$ curl --data 'request body' URL

如果命令行無法容納 request body,cURL 可以從文件中讀取 request body:

$ curl --data @文件名 URL

有時,您可能需要為 Content-Type 頭指定一個自定義值(cURL 的默認值為 application/x-www-form-urlencoded)。您可以使用 -H 來實現這一功能。例如,如果您想發送一個帶有 JSON body 的 POST request,可以使用:

$ curl --data 'json body' -H 'Content-Type: application/json' URL

請注意,curl 也有一個選項,可以以 json 格式寫入 post 數據,並自動更改 header: --json:

$ curl --json '{"key":"value"}' URL

提示與技巧

跟蹤重定向

跟蹤重定向(如 HTTP 到 HTTPS 重定向):

$ curl --location URL

顯示下載錯誤

默認情況下,curl 會忽略錯誤(例如,在下載文件時,如果出現錯誤,curl 不會通知你,創建的文件將是空的),因此使用 --fail 可以讓它顯示錯誤信息:

$ curl --fail URL

壓縮

如果你想壓縮傳輸數據,(例如,在帶寬比CPU更有限的情況下,curl 會下載壓縮數據,然後在下載後解壓縮):

$ curl --compressed URL

進度條

當下載文件時,curl 可以選擇普通的進度條(例如 [##### ] 80% )。

$ curl --progress-bar URL

通配

也可以在 curl 中使用通配

$ curl "example.com/images/[1-9].png"
$ curl "example.com/{first_page,second_page,third_page}"

配置文件

curl 也會在主目錄和 $XDG_CONFIG_HOME 中搜索名為 .curlrc配置文件。默認情況下,你只需將想要使用的命令行參數放在 curl 中,例如 :

$HOME/.curlrc
# this is a comment, the next line would be the option for progressbar:
-#
# to make curl always compress:
--compressed
# or just
compressed

參見