linuxcurl命令可以做的不僅僅是下載檔案。找出curl的功能,以及何時應該使用它而不是wget。
人們常常很難確定wget和curl命令的相對優勢。這些命令確實有一些功能重疊。它們各自可以從遠端位置檢索檔案,但這就是相似性的終點。
wget是下載內容和檔案的絕佳工具。它可以下載檔案、網頁和目錄。它包含智慧例程來遍歷網頁中的連結,並遞迴地跨整個網站下載內容。它是無與倫比的命令列下載管理器。
捲曲滿足了完全不同的需求。是的,它可以檢索檔案,但它不能遞迴地瀏覽網站,尋找要檢索的內容。curl實際做的是讓您透過向遠端系統發出請求,並檢索和顯示它們對您的響應來與遠端系統進行互動。這些響應很可能是web頁面內容和檔案,但是它們也可以包含透過web服務或API提供的資料,這些資料是curl請求提出的“問題”的結果。
curl不僅僅侷限於網站。curl支援20多種協議,包括HTTP、HTTPS、SCP、SFTP和FTP。而且可以說,由於它對Linux管道的出色處理,curl可以更容易地與其他命令和指令碼整合。
curl的作者有一個網頁,描述了他所看到的curl和wget之間的區別。
在用於研究本文的計算機中,fedora31和manjaro18.1.0已經安裝了curl。curl必須安裝在ubuntu18.04 LTS上。在Ubuntu上,執行以下命令進行安裝:
sudo apt-get install curl--version選項使curlreport成為其版本。它還列出了它支援的所有協議。
curl --version如果我們將curl指向一個網頁,它將為我們檢索它。
curl https://www.bbc.com但它的預設操作是將其作為原始碼轉儲到終端視窗。
注意:如果你不告訴curl你想要一個檔案,它總是會把它轉儲到終端視窗。如果正在檢索的檔案是二進位制檔案,則結果可能無法預測。shell可能試圖將二進位制檔案中的某些位元組值解釋為控制字元或轉義序列。
讓我們告訴curl將輸出重定向到一個檔案中:
curl https://www.bbc.com > bbc.html這次我們看不到檢索到的資訊,它直接為我們傳送到檔案。因為沒有要顯示的終端視窗輸出,curl輸出一組進度資訊。
在上一個示例中它沒有這樣做,因為進度資訊會分散在整個網頁原始碼中,所以curl會自動抑制它。
在本例中,curl檢測到輸出被重定向到一個檔案,並且生成進度資訊是安全的。
提供的資訊是:
因為我們將curl的輸出重定向到一個檔案,所以現在有一個名為bbc.html.”
雙擊該檔案將開啟預設瀏覽器,以便顯示檢索到的網頁。
請注意,瀏覽器位址列中的地址是此計算機上的本地檔案,而不是遠端網站。
我們不必重定向輸出來建立檔案。我們可以使用-o(output)選項建立一個檔案,並告訴curl建立該檔案。在這裡,我們使用-o選項並提供要建立的檔案的名稱“bbc.html.”
curl -o bbc.html https://www.bbc.com要將基於文字的下載資訊替換為簡單的進度條,請使用-#(進度條)選項。
curl -x -o bbc.html https://www.bbc.com重新啟動已終止或中斷的下載很容易。讓我們開始下載一個相當大的檔案。我們將使用最新的ubuntu18.04長期支援版本。我們使用--output選項指定要儲存到的檔名:“ubuntu180403.iso”
curl --output ubuntu18043.iso http://releases.ubuntu.com/18.04.3/ubuntu-18.04.3-desktop-amd64.iso下載開始並朝著完成的方向前進。
如果我們使用Ctrl+C強制中斷下載,我們將返回到命令提示符,並且放棄下載。
要重新啟動下載,請使用-C(continue at)選項。這將導致curl在目標檔案中的指定點或偏移處重新啟動下載。如果使用連字元作為偏移量,curl將檢視檔案中已下載的部分,並確定用於自身的正確偏移量。
curl -C - --output ubuntu18043.iso http://releases.ubuntu.com/18.04.3/ubuntu-18.04.3-desktop-amd64.iso下載已重新啟動。curl報告重新啟動時的偏移量。
使用-I(head)選項,您只能檢索HTTP頭。這與向web伺服器傳送HTTP HEAD命令相同。
curl -I www.twitter.com此命令僅檢索資訊;它不下載任何網頁或檔案。
使用xargs我們可以一次下載多個url。也許我們想下載一系列網頁,組成一篇文章或教程。
將這些URL複製到編輯器並將其儲存到名為“URL到”的檔案中-下載.txt“我們可以使用xargs將文字檔案的每一行的內容作為一個引數,它將依次提供給curl。
https://tutorials.ubuntu.com/tutorial/tutorial-create-a-u**-stick-on-ubuntu#0 https://tutorials.ubuntu.com/tutorial/tutorial-create-a-u**-stick-on-ubuntu#1 https://tutorials.ubuntu.com/tutorial/tutorial-create-a-u**-stick-on-ubuntu#2 https://tutorials.ubuntu.com/tutorial/tutorial-create-a-u**-stick-on-ubuntu#3 https://tutorials.ubuntu.com/tutorial/tutorial-create-a-u**-stick-on-ubuntu#4 https://tutorials.ubuntu.com/tutorial/tutorial-create-a-u**-stick-on-ubuntu#5這是讓xargs將這些url一次傳遞給curl所需的命令:
xargs -n 1 curl -O < urls-to-download.txt請注意,此命令使用-O(遠端檔案)輸出命令,該命令使用大寫字母“O”。此選項使curl以檔案在遠端伺服器上的名稱儲存檢索到的檔案。
-n1選項告訴xargs將文字檔案的每一行視為單個引數。
當您執行命令時,您將看到多個下載開始和結束,一個接一個。
簽入檔案瀏覽器顯示已下載多個檔案。每一個都有它在遠端伺服器上的名字。
相關:如何在Linux上使用xargs命令
將curl與檔案傳輸協議(FTP)伺服器結合使用很容易,即使您必須使用使用者名稱和密碼進行身份驗證。要使用curl傳遞使用者名稱和密碼,請使用-u(user)選項,並鍵入使用者名稱、冒號“:”和密碼。不要在結腸前後留空格。
這是一個免費的測試FTP*****的麗貝克斯。測試FTP站點有一個預先設定的使用者名稱“demo”,密碼是“password”。不要在生產或“真實”FTP伺服器上使用這種弱使用者名稱和密碼。
curl -u demo:password ftp://test.rebex.netcurl指出我們將它指向一個FTP伺服器,並返回伺服器上存在的檔案列表。
此伺服器上的唯一檔案是“自述檔案.txt檔案,長度為403位元組。讓我們找回它。使用與剛才相同的命令,並附加檔名:
curl -u demo:password ftp://test.rebex.net/readme.txt將檢索檔案並在終端視窗中顯示其內容。
在幾乎所有情況下,將檢索到的檔案儲存到磁碟上會比顯示在終端視窗中更方便。我們可以再次使用-O(remote file)輸出命令將檔案儲存到磁碟,檔名與遠端伺服器上的檔名相同。
curl -O -u demo:password ftp://test.rebex.net/readme.txt檔案將被檢索並儲存到磁碟。我們可以使用ls來檢查檔案的詳細資訊。它與FTP伺服器上的檔案同名,長度相同,403位元組。
ls -hl readme.txt相關:如何在Linux上使用FTP命令
某些遠端伺服器將接受傳送給它們的請求中的引數。例如,這些引數可以用於格式化返回的資料,也可以用於選擇使用者希望檢索的確切資料。通常可以使用curl與web應用程式程式設計介面(api)互動。
作為一個簡單的例子,ipify網站有一個API可以查詢,以確定您的外部IP地址。
curl https://api.ipify.org透過向命令中新增format引數,使用值“json”,我們可以再次請求外部IP地址,但這次返回的資料將以json格式編碼。
curl https://api.ipify.org?format=json下面是另一個使用googleapi的示例。它返回一個描述一本書的JSON物件。必須提供的引數是圖書的國際標準書號(ISBN)。你可以在大多數書的封底找到這些,通常在條形碼下面。我們在這裡使用的引數是“0131103628”
curl https://www.googleapis.com/books/v1/volumes?q=i**n:0131103628返回的資料很全面:
如果我想從一個網站下載內容,並讓網站的樹結構遞迴搜尋該內容,我會使用wget。
如果我想與遠端伺服器或API互動,或者可能下載一些檔案或網頁,我會使用curl。特別是如果該協議是wget不支援的眾多協議之一的話。
...一個放在第一位(不尋常,但不是不可能)。你需要知道如何在沒有瀏覽器的情況下下載Chrome(或你選擇的瀏覽應用程式)。 瀏覽器被阻止:您的瀏覽器也有可能被阻止聯機。您的計算機上是否正在執行家長設定...
... 下面介紹如何使用Windows子系統在Windows中執行Linux桌面。 ...
... 讓我們看看如何在計算機中建立Instapaper或Pocket的克隆,而不會丟失任何網頁資源。 ...
為您的電視和電影收藏設計終極媒體伺服器可能是一項挑戰。你應該使用什麼硬體,你應該安裝什麼作業系統,你應該執行什麼樣的軟體? ...
... 在這裡,您將瞭解什麼是crontab,如何新增自動化作業,以及一些實際示例。 ...
... 但不一定要這樣。是時候學習如何只使用別名透過SSH高效登入、傳輸單個檔案或目錄、執行遠端SSH命令以及輕鬆地將遠端伺服器裝載到本地目錄了。 ...
...你的系統,例如,可能是滲透他們的第一步。因此,評估如何保護您的系統是值得的。 ...
...視窗推到後臺(稱為“分離”)。當你想看到你的程序是如何進行的,你可以把視窗拉到前臺(“重新連線”)並再次使用它。這對於您不希望透過關閉終端視窗意外終止的長程序來說非常有用。 一旦運行了螢幕會話,就可以...