15 個實用的 Linux cURL 命令示例(cURL 下載示例)

      網友投稿 2367 2025-03-31

      cURL 是一個軟件包,由命令行工具和使用 URL 語法傳輸數據的庫組成。


      cURL 支持各種協議,如 DICT、FILE、FTP、FTPS、Gopher、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、POP3、POP3S、RTMP、RTSP、SCP、SFTP、SMTP、SMTPS、Telnet 和 TFTP。

      本文提供了 15 個實用的 cURL 使用示例。

      1. 下載單個文件

      以下命令將獲取 URL 的內容并將其顯示在 STDOUT 中(即在您的終端上)。

      $ curl http://www.centos.org

      要將輸出存儲在文件中,您可以將其重定向,如下所示。這還將顯示一些額外的下載統計信息。

      $ curl http://www.centos.org > centos-org.html % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 27329 0 27329 0 0 104k 0 --:--:-- --:--:-- --:--:-- 167k

      2. 將 cURL 輸出保存到文件

      我們可以使用 -o/-O 選項將 curl 命令的結果保存到文件中。

      -o(小寫 o)結果將保存在命令行中提供的文件名中

      -O(大寫O)URL中的文件名將被用作存儲結果的文件名

      $ curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html

      現在頁面 gettext.html 將保存在名為“mygettext.html”的文件中。您還可以注意到,當使用 -o 選項運行 curl 時,它會顯示下載進度表,如下所示。

      % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 66 1215k 66 805k 0 0 33060 0 0:00:37 0:00:24 0:00:13 45900 100 1215k 100 1215k 0 0 39474 0 0:00:31 0:00:31 --:--:-- 68987

      當您使用 curl -O(大寫 O)時,它會將內容保存在本地機器中名為“gettext.html”的文件中。

      $ curl -O http://www.gnu.org/software/gettext/manual/gettext.html

      注意:當 curl 必須將數據寫入終端時,它會禁用進度表,以避免打印混亂。我們可以使用 '>'|'-o'|'-O' 選項將結果移動到文件中。

      3. 一次獲取多個文件

      15 個實用的 Linux cURL 命令示例(cURL 下載示例)

      我們可以通過在命令行上指定 URL 來一次性下載多個文件。

      句法:

      $ curl -O URL1 -O URL2

      下面的命令將下載 index.html 和 gettext.html 并將其保存在當前目錄下的相同名稱中。

      $ curl -O http://www.gnu.org/software/gettext/manual/html_node/index.html -O http://www.gnu.org/software/gettext/manual/gettext.html

      請注意,當我們從同一個服務器下載多個文件時,如上圖所示,curl 會嘗試重新使用連接。

      4. 使用 -L 選項跟隨 HTTP 位置標頭

      默認情況下,CURL 不遵循 HTTP 位置標頭。它也被稱為重定向。當請求的網頁移動到另一個地方時,HTTP 位置標頭將作為響應發送,它將包含實際網頁所在的位置。

      例如,當有人在印度的瀏覽器中輸入 google.com 時,它會自動重定向到“google.co.in”。這是基于 HTTP 位置標頭完成的,如下所示。

      $ curl http://www.google.com 302 Moved

      302 Moved

      The document has moved here

      上面的輸出表明請求的文檔已移至“http://www.google.co.in/”。

      我們可以使用 -L 選項堅持 curl 跟隨重定向,如下所示。現在它將下載 google.co.in 的 html 源代碼。

      $ curl -L http://www.google.com

      5. 繼續/恢復以前的下載

      使用 curl -C 選項,您可以繼續下載由于某種原因已經停止的下載。當您下載大文件并且下載中斷時,這將很有幫助。

      如果我們說“-C -”,那么 curl 會找到從哪里開始恢復下載。我們也可以給出一個偏移量'-C '。將從源文件的開頭跳過給定的偏移字節。

      使用 curl 開始大下載,然后按 Ctrl-C 停止下載。

      $ curl -O http://www.gnu.org/software/gettext/manual/gettext.html ############## 20.1%

      注意:-# 用于顯示進度條而不是進度表。

      現在上述下載停止在 20.1%。使用“curl -C -”,我們可以從之前停止的地方繼續下載。現在下載量從 20.1% 開始。

      curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html ############### 21.1%

      6. 限制數據傳輸速率

      您可以使用 –limit-rate 選項限制數據傳輸的數量。您可以指定最大傳輸速率作為參數。

      $ curl --limit-rate 1000B -O http://www.gnu.org/software/gettext/manual/gettext.html

      上述命令將數據傳輸限制為 1000 字節/秒。curl 可能會在短時間內使用更高的傳輸速率。但平均而言,它會達到 1000B/秒。

      以下是上述命令的進度表。可以看到當前速度接近1000 Bytes。

      % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 1 1215k 1 13601 0 0 957 0 0:21:40 0:00:14 0:21:26 999 1 1215k 1 14601 0 0 960 0 0:21:36 0:00:15 0:21:21 999 1 1215k 1 15601 0 0 962 0 0:21:34 0:00:16 0:21:18 999

      7.只有在給定時間之前/之后修改的文件才下載

      我們可以使用 curl 中的 -z 選項獲取特定時間后修改的文件。這將適用于 FTP 和 HTTP。

      $ curl -z 21-Dec-11 http://www.example.com/yy.html

      上面的命令將下載 yy.html 只有當它被修改晚于給定的日期和時間

      $ curl -z -21-Dec-11 http://www.example.com/yy.html

      如果在給定的日期和時間之前修改了 yy.html,則上面的命令將下載 yy.html。

      有關日期表達式支持的各種語法,請參閱“man curl_getdate”

      8. 在 cURL 中通過 HTTP 身份驗證

      有時,網站需要用戶名和密碼才能查看內容(可以使用 .htaccess 文件完成)。在 -u 選項的幫助下,我們可以將這些憑據從 cURL 傳遞到 Web 服務器,如下所示。

      $ curl -u username:password URL

      注意:默認情況下 curl 使用基本 HTTP 身份驗證。我們可以使用 -ntlm | 指定其他身份驗證方法。-消化。

      9. 從 FTP 服務器下載文件

      cURL 也可用于從 FTP 服務器下載文件。如果給定的 FTP 路徑是一個目錄,默認情況下它會列出特定目錄下的文件。

      $ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php

      上述命令將從ftp服務器下載xss.php文件并保存在本地目錄中。

      $ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/

      這里,給定的 URL 指的是一個目錄。所以 cURL 會列出給定 URL 下的所有文件和目錄

      10. 使用范圍列出/下載

      cURL 支持在 URL 中給出的范圍。當給定范圍時,將下載在范圍內匹配的文件。從 FTP 鏡像站點下載包會很有幫助。

      $ curl ftp://ftp.uk.debian.org/debian/pool/main/[az]/

      上面的命令將在終端中列出 az 范圍中的所有包。

      11.上傳文件到FTP服務器

      Curl 也可用于通過 -T 選項將文件上傳到 FTP 服務器。

      $ curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com

      上述命令會將名為 myfile.txt 的文件上傳到 FTP 服務器。您還可以使用范圍操作同時上傳多個文件。

      $ curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com

      我們可以選擇使用“.”?從 STDIN 獲取輸入并傳輸到遠程。

      $ curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt

      上面的命令將從標準輸入中獲取用戶的輸入,并將內容保存在 ftp 服務器中,名稱為“myfile_1.txt”。

      您可以為每個 URL 提供一個“-T”,這對指定要上傳的內容。

      12. 使用 Verbose 和 Trace 選項的更多信息

      您可以使用 -v 選項了解正在發生的事情。-v 選項啟用詳細模式,它將打印詳細信息

      curl -v http://google.co.in

      about 命令將輸出以下內容

      * About to connect() to www.google.com.in port 80 (#0) * Trying 74.125.236.56... connected * Connected to www.google.co.in (74.125.236.56) port 80 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.21.0 (i486-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.15 libssh2/1.2.6 > Host: www.google.co.in > Accept: */* > * HTTP 1.0, assume close after body < HTTP/1.0 200 OK < Date: Tue, 10 Apr 2012 11:18:39 GMT < Expires: -1 < Cache-Control: private, max-age=0 < Content-Type: text/html; charset=ISO-8859-1 < Set-Cookie: PREF=ID=7c497a6b15cc092d:FF=0:TM=1334056719:LM=1334056719:S=UORpBwxFmTRkbXLj; expires=Thu, 10-Apr-2014 11:18:39 GMT; path=/; domain=.google.co.in . .

      如果您需要更詳細的信息,則可以使用 –trace 選項。跟蹤選項將啟用所有傳入/傳出數據到給定文件的完整跟蹤轉儲

      => Send header, 169 bytes (0xa9) 0000: 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a GET / HTTP/1.1.. 0010: 55 73 65 72 2d 41 67 65 6e 74 3a 20 63 75 72 6c User-Agent: curl .. 0060: 2e 32 2e 33 2e 34 20 6c 69 62 69 64 6e 2f 31 2e .2.3.4 libidn/1.

      0070: 31 35 20 6c 69 62 73 73 68 32 2f 31 2e 32 2e 36 15 libssh2/1.2.6 0080: 0d 0a 48 6f 73 74 3a 20 77 77 77 2e 67 6f 6f 67 ..Host: www.goog 0090: 6c 65 2e 63 6f 2e 69 6e 0d 0a 41 63 63 65 70 74 le.co.in..Accept 00a0: 3a 20 2a 2f 2a 0d 0a 0d 0a : */*.... == Info: HTTP 1.0, assume close after body <= Recv header, 17 bytes (0x11) 0000: 48 54 54 50 2f 31 2e 30 20 32 30 30 20 4f 4b 0d HTTP/1.0 200 OK. 0010: 0a

      當 curl 由于某種原因失敗而我們不知道為什么時,這個詳細和跟蹤選項會派上用場。

      13. 使用 DICT 協議獲取單詞的定義

      您可以在 DICT 協議的幫助下使用 cURL 獲取單詞的定義。我們需要將字典服務器 URL 傳遞給它。

      $ curl dict://dict.org/d:bash

      上面的命令將列出bash的含義如下

      151 "Bash" gcide "The Collaborative International Dictionary of English v.0.48" Bash \Bash\, v. t. [imp. & p. p. {Bashed}; p. pr. & vb. n. {Bashing}.] [Perh. of imitative origin; or cf. Dan. baske to strike, bask a blow, Sw. basa to beat, bas a beating.] To strike heavily; to beat; to crush. [Prov. Eng. & Scot.] --Hall Caine. [1913 Webster] Bash her open with a rock. --Kipling. [Webster 1913 Suppl.] . 151 "Bash" gcide "The Collaborative International Dictionary of English v.0.48" Bash \Bash\, n. 1. a forceful blow, especially one that does damage to its target. [PJC] . .

      現在你可以看到它使用了“The Collaborative International Dictionary of English”。有很多詞典可用。我們可以使用列出所有字典

      $ curl dict://dict.org/show:db jargon "The Jargon File (version 4.4.7, 29 Dec 2019)" foldoc "The Free On-line Dictionary of Computing (26 July 2019)" easton "Easton's 1897 Bible Dictionary" hitchcock "Hitchcock's Bible Names Dictionary (late 1800's)" bouvier "Bouvier's Law Dictionary, Revised 6th Ed (1856)"

      現在為了在計算機中找到Bash的實際含義我們可以在“foldoc”字典中搜索bash如下

      $ curl dict://dict.org/d:bash:foldoc

      結果將是,

      bash Bourne Again SHell. {GNU}'s {command interpreter} for {Unix}. Bash is a {Posix}-compatible {shell} with full {Bourne shell} syntax, and some {C shell} commands built in. The Bourne Again Shell supports {Emacs}-style command-line editing, job control, functions, and on-line help. Written by Brian Fox of {UCSB}.

      14.使用代理下載文件

      我們可以使用 -x 選項指定 cURL 使用代理來執行特定操作。我們需要指定代理的主機和端口。

      $ curl -x proxysever.test.com:3128 http://google.com.in

      15. 使用 SMTP 協議發送郵件

      cURL 也可用于使用 SMTP 協議發送郵件。您應該指定發件人地址、收件人地址和郵件服務器 IP 地址,如下所示。

      $ curl --mail-from blah@test.com --mail-rcpt tiamo@test.com smtp://mailserver.com

      一旦輸入上述命令,它將等待用戶提供數據到郵件。編寫完消息后,鍵入 。(句號) 作為最后一行,將立即發送電子郵件。

      Subject: Testing This is a test mail .

      FTP Linux PHP

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:共享文檔如何多人編輯(電腦共享文檔如何多人編輯)
      下一篇:wps如何實現上下兩行表格內容互換
      相關文章
      亚洲免费在线视频播放| gogo全球高清大胆亚洲| 亚洲国产综合第一精品小说| 亚洲尤码不卡AV麻豆| 四虎亚洲国产成人久久精品| 亚洲国产成人在线视频| 91大神亚洲影视在线| 亚洲AV综合色一区二区三区| 精品国产综合成人亚洲区| 日本亚洲国产一区二区三区| 国产亚洲精品成人a v小说| 亚洲卡一卡2卡三卡4麻豆| 久久亚洲AV成人无码国产 | 久久精品国产99精品国产亚洲性色| 亚洲愉拍99热成人精品热久久| 中文字幕在亚洲第一在线| 亚洲小说区图片区另类春色| 亚洲欧洲日产国码无码久久99 | 亚洲国产成人99精品激情在线| 亚洲人成综合在线播放| 亚洲成综合人影院在院播放| 亚洲喷奶水中文字幕电影| 91亚洲精品自在在线观看| 亚洲午夜电影在线观看高清| 最新国产精品亚洲| 亚洲精品无码久久| 亚洲av麻豆aⅴ无码电影| mm1313亚洲精品无码又大又粗| 久久久久亚洲AV无码专区网站 | 激情内射亚洲一区二区三区爱妻| 国产成人亚洲合集青青草原精品 | 国产L精品国产亚洲区久久 | 国产a v无码专区亚洲av | 亚洲中文字幕无码中文字| 亚洲色大成WWW亚洲女子| 国产成人精品日本亚洲语音 | 亚洲av午夜成人片精品电影| 久久精品国产精品亚洲艾草网美妙| 亚洲欧洲日产国码无码网站| 亚洲2022国产成人精品无码区| 亚洲一本综合久久|