curl
是一個命令行實用程序,用於將數據從服務器或傳輸到服務器,該服務器設計用於在沒有用戶交互的狀況下工做。 使用 curl
,您可使用支持的協議(包括 HTTP、 HTTPS、 SCP、 SFTP 和 FTP)下載或上傳數據。 curl
提供了許多選項,容許您恢復傳輸、限制帶寬、代理支持、用戶認證等等。vue
下面就介紹常見的用法, 將經過實際例子和最多見的 curl
選項的詳細說明,向您展現如何使用 curl 工具。java
如今大多數 Linux 發行版都預先安裝了 curl 包。linux
要檢查 curl
包是否已安裝在系統上,請打開控制檯,鍵入 curl,而後按回車鍵。 若是您安裝了 curl,系統將打印 curl: 嘗試‘curl --help’或‘ curl --manual’獲取更多信息。 不然,您將看到相似 curl 命令的內容沒有被找到。
git
若是沒有安裝 curl,您可使用發行版的包管理器輕鬆地安裝它。github
sudo apt update sudo apt install curl
sudo yum install curl
curl 命令的語法以下:macos
curl [options] [URL...]
在其最簡單的形式中,當不使用任何選項調用時,curl 將指定的資源顯示到標準輸出。npm
例如,要檢索示例網站的主頁,你能夠運行:瀏覽器
curl chasays.github.io
該命令將在您的終端窗口中打印示例.com 主頁的源代碼。服務器
若是沒有指定協議,curl 會嘗試猜想您想要使用的協議,它將默認爲 HTTP。cookie
若要保存 curl 命令的結果,請使用-o 或-O 選項。
Lowercase -o 使用一個預約義的文件名保存文件,在下面的示例中是 vue-v2.6.10. js:
curl -o vue-v2.6.10.js https://cdn.jsdelivr.net/npm/vue/dist/vue.js
大寫 -O 保存文件和它的原始文件名:
curl -O https://cdn.jsdelivr.net/npm/vue/dist/vue.js
要一次下載多個文件,請使用多個 -O 選項,後跟要下載的文件的 URL。
在下面的例子中,咱們正在下載 Arch Linux 和 Debian iso 文件:
curl -O http://mirrors.edge.kernel.org/archlinux/iso/2018.06.01/archlinux-2018.06.01-x86_64.iso \ -O https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.4.0-amd64-netinst.iso
您可使用 -C
選項恢復下載。 若是您的鏈接在下載一個大文件期間斷開,並且您能夠繼續前一個文件而不是從頭開始下載,那麼這將很是有用。
例如,若是你正在下載 Ubuntu 18.04 iso 文件,使用如下命令:
curl -O https://updates.cdn-apple.com/2020/macos/061-44388-20200128-3badc52c-6391-412c-86d9-fc2aaf9514e0/macOSUpd10.15.3.dmg
而後你的鏈接忽然斷開,你能夠用如下命令繼續下載:
curl -C - -O https://updates.cdn-apple.com/2020/macos/061-44388-20200128-3badc52c-6391-412c-86d9-fc2aaf9514e0/macOSUpd10.15.3.dmg
Http 頭是冒號分隔的鍵值對,包含用戶代理、內容類型和編碼等信息。 頭文件經過請求或響應在客戶端和服務器之間傳遞。
使用 -I 選項僅獲取指定資源的 HTTP 標頭:
curl -I --http2 https://www.apple.com/
要檢查某個特定的 URL 是否支持新的 HTTP/2協議,請使用-i 和 --http2選項獲取 HTTP header:
curl -I --http2 -s https://apple.com/ | grep HTTP
S 選項告訴 curl 以靜音(quiet)運行,並隱藏進度表和錯誤消息。
若是遠程服務器支持 http/2,curl 打印 http/2.0200:
HTTP/2 200
不然,回覆就是 http/1.1200:
HTTP/1.1 200 OK
若是您使用的是 curl 版本7.47.0或更高版本,則不須要使用 -- http2選項,由於全部 HTTPS 鏈接都默認啓用了 http/2。
默認狀況下,curl 不遵循 HTTP Location 頭。
若是你嘗試檢索非 www 版本的 google. com,你會注意到,你不但沒有得到頁面的來源,反而會被重定向到 www 版本:
curl baidu.com
選項指示 curl 跟蹤任何重定向,直到它到達最終目的地:
``
curl -L baidu.com
``
有時在下載文件時,遠程服務器可能被設置爲阻止 curl User-Agent,或者根據訪問者設備和瀏覽器返回不一樣的內容。
在這種狀況下模擬不一樣的瀏覽器,使用 -a 選項。
例如,要模擬 Firefox 60,你可使用:
curl -A "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" https://baidu.org/
--limit-rate 選項容許您限制數據傳輸速率。 該值能夠用字節表示,k 後綴爲千字節,m 後綴爲兆字節,g 後綴爲千字節。
在下面的例子中 curl 將下載 Go 二進制文件,並將下載速度限制在1 mb:
curl --limit-rate 1m -O https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz
此選項有助於防止 curl 佔用全部可用帶寬。
要使用 curl 訪問受保護的 FTP 服務器,請使用-u 選項並指定用戶名和密碼,以下所示:
curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.baidu.com/
登陸後,該命令列出用戶主目錄中的全部文件和目錄。
你可使用如下語法從 FTP 服務器下載一個文件:
curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/file.tar.gz
要將文件上傳到 FTP 服務器,請使用-t 後跟要上傳的文件的名稱:
curl -T newfile.tar.gz -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/
有時您可能須要使用特定的 cookie 發出 HTTP 請求以訪問遠程資源或調試問題。
默認狀況下,當使用 curl 請求資源時,不會發送或存儲 cookie。
若要將 cookie 發送到服務器,請使用-b 開關,後跟包含 cookie 或字符串的文件名。
例如,下載 oraclejavajdkrpm 文件 JDK-10.0.2 linux-x64 bin。 Rpm 你須要傳遞一個值爲 a 的名爲 oraclericense 的 cookie:
curl -L -b "oraclelicense=a" -O http://download.oracle.com/otn-pub/java/jdk/10.0.2+13/19aef61b38124481863b1413dce1855f/jdk-10.0.2_linux-x64_bin.rpm
## 使用代理
支持不一樣類型的代理,包括 HTTP、 HTTPS 和 SOCKS。 若要經過代理服務器傳輸數據,請使用-x (-- proxy)選項,後跟代理 URL。
下面的命令使用代理在192.168.44.1 port 8888上下載指定的資源:
curl -x 192.168.44.1:8888 http://google.com/
若是代理服務器須要身份驗證,請使用-u (-- proxy-user)選項,後跟用戶名和密碼,用冒號分隔(user: password) :
curl -U username:password -x 192.168.44.1:8888 http://google.com/
curl
是一個命令行工具,它容許您從遠程主機或向遠程主機傳輸數據。 它對於故障排除、下載文件等很是有用。
我只是作了一些簡單的實例,可是演示了最經常使用的 curl
選項,這些示例旨在幫助您理解 curl 命令的工做原理。
本篇文章由一文多發平臺ArtiPub自動發佈