cURL 是一個命令行工具和庫,用於使用 URL 傳輸數據。該命令支持多種不同的協議,包括 HTTP、HTTPS、FTP、SCP 和 SFTP。它還可以在沒有用戶交互的情況下工作,比如在腳本中。
安裝
用法
下載
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
參見
- Wikipedia:cURL
- Everything curl - cURL 使用指南詳解
- curl(1)