curl命令在shell中可是一個非常強大的工具,主要用來傳輸數據,它支持多種協議,包括HTTP、HTTPS、FTP、FTPS等等。其功能非常豐富,用法也相當多樣,這裏詳細的分析一下curl命令的各種使用方式。
基礎用法
- 下載文件
`curl http://example.com/file.txt`
這條命令會將URL指向的數據輸出到標準輸出,通常是你的終端。
- 保存下載的文件
`curl -o filename.txt http://example.com/file.txt`
使用`-o`選項後跟文件名,可以將下載的數據保存到指定的文件中。
- 發送POST請求
`curl -d "param1=value1¶m2=value2" http://example.com/post`
`-d`選項用於發送POST數據。
- 發送GET請求
`curl -G -d "param1=value1¶m2=value2" http://example.com/get`
`-G`選項使得`curl`把數據附加在URL後面,使用GET方法來發送請求。
- 添加HTTP頭
`curl -H "X-Custom-Header: value" http://example.com`
`-H`選項用於添加一個自定義的HTTP頭。
進階用法
- 用户認證
`curl -u username:password http://example.com`
`-u`選項用於提供需要認證的網站的用户名和密碼。
- 從文件中讀取POST數據
`curl -d @filename http://example.com/post`
`-d`選項後面使用`@`符號可以從文件中讀取要發送的數據。
- 指定請求方法
`curl -X POST http://example.com`
`-X`選項用於指定使用的HTTP方法。
- 傳輸文件(例如FTP)
`curl -T myfile.txt ftp://ftp.example.com/remote/path/`
`-T`選項用於上傳文件到FTP服務器。
- 跟蹤重定向
`curl -L http://example.com`
`-L`選項讓curl跟蹤服務器的重定向。
安全相關
- 使用HTTPS協議
`curl -E mycert.pem https://secure.example.com`
`-E`選項用於指定一個證書,用於HTTPS的加密連接。
- 禁用證書驗證
`curl -k https://example.com`
`-k`或`--insecure`選項讓curl不去驗證SSL證書的有效性。
靜默模式
- 靜默/安靜模式
`curl -s http://example.com`
`-s`或`--silent`選項讓`curl`在執行時不顯示進度條和錯誤信息,這在腳本中非常有用,可以避免輸出過多的信息。
安全選項
- 忽略SSL證書驗證
`curl -k http://example.com`
`-k`或`--insecure`允許`curl`執行“不安全”的SSL連接和數據傳輸,不驗證對方的證書。
輸出控制
- 顯示頭信息
`curl -i http://example.com`
`-i`或`--include`用於在輸出中包括HTTP響應頭。
- 僅輸出響應體
`curl -s -o /dev/null -D - http://example.com`
使用`-D -`選項可以僅輸出響應頭到標準輸出,結合`-o /dev/null`則僅顯示響應頭,不顯示響應體。
數據處理
- 發送JSON數據
`curl -H "Content-Type: application/json" -d '{"key1":"value1", "key2":"value2"}' http://example.com/post`
通過`-H`添加`Content-Type`為`application/json`並使用`-d`發送JSON格式的數據。
- 從標準輸入讀取數據發送
`cat data.txt | curl -d @- http://example.com/post`
使用`-d @-`從標準輸入讀取數據。
文件下載和上傳
- 斷點續傳
`curl -C - -o file.part http://example.com/bigfile.zip`
`-C -`指示`curl`自動尋找本地文件大小,並從上次中斷處繼續下載。
- 並行下載
`curl -Z -O http://example.com/file1.zip -O http://example.com/file2.zip`
`-Z`或`--parallel`可以並行處理多個文件下載。
調試和追蹤
- 詳細模式
`curl -v http://example.com`
`-v`或`--verbose`會顯示請求和響應的所有信息,包括髮送的頭、請求數據、連接信息等。
- 跟蹤數據包
`curl --trace output.txt http://example.com`
`--trace`選項輸出很詳細的調試信息,這些信息被寫入到指定的文件中,包括二進制數據。
其他有用的選項
- 設置連接超時
`curl --connect-timeout 10 http://example.com`
`--connect-timeout`選項用於設置連接超時的秒數。
- 顯示詳細的信息
`curl -v http://example.com`
`-v`或`--verbose`選項用於打印詳細的信息,有助於調試。
- 保存和讀取Cookie
`curl -c cookies.txt http://example.com
curl -b cookies.txt http://example.com`
`-c`選項用於保存響應中的cookie到文件,`-b`選項用於在請求中包含這些cookie。
這些是curl的一些常用命令和技巧,當然curl的功能遠不止這些。它還支持代理、速率限制、時間條件請求等高級功能,你可以通過閲讀curl的man頁面(man curl)或在線文檔來獲取更多詳細信息。希望這些信息對你有用!