curl 使用詳解

cURL.1 手冊頁

名稱

cURL - transfer a URL


摘要

cURL[選項] [URL... ]


描述

cURL 是一個向服務器或從服務器傳輸數據的工具,它支持HTTP 、HTTPS、

FTP 、FTPS 、SCP、SFTP、TFTP、DICT、TELNET、LDAP 或FILE 等協議。

該命令設計爲無需用戶干預即可執行。


cURL 提供了一大堆諸如代理支持、用戶認證、FTP 上傳、HTTP POST、SSL 連

接、Cookies、文件續傳等等有用的技巧。正如你將在下面看到的,如此多的特

性會讓你頭暈目眩!


cURL 的所有傳輸相關特性的是由libcURL 所支持。詳情見libcURL (3)。


URL:


URL 語法是協議相關的。您可在RFC 3986找到詳細解釋。


您可以指定多個URL 或在大括號{}內寫入URL 的一部分形成URL 的集合:

http://site.{one,two,three}.com


或者您也可以使用[ ]獲得連續的字母或數字序列:

ftp://ftp.numericals.com/file[1-100].txt ftp://ftp.numericals.com/file[001-100].txt ( 前

面帶有0的) ftp://ftp.letters.com/file[a-z].txt


目前還不支持嵌套的序列,但是您可以在一條URL 中混合使用多個序列:

http://any.org/archive[1996-1999]/vol[1-4]/part{a,b,c}.html


您可在命令行中指定任意數量的URL。它們將以指定的順序被逐一獲取。

從cURL 7.15.1版以來,您也可以指定步長範圍,如此您就可以得到所有帶第N

個數字或字母的URL:

http://www.numericals.com/file[1-100:10].txt http://www.letters.com/file[a-z:2].txt


如果您指定的URL 沒有協議://前綴,cURL 會嘗試猜測您可能需要的協議。默認

使用HTTP 協議,但會基於常用主機名前綴而嘗試使用其它協議。

例如,對於以“FTP”開頭的主機名稱,cURL 將假定使用FTP 協議。


cURL 會嘗試爲多個文件的傳輸重用連接,從而使從同一臺服務器上獲取文件不

會做多重連接/握手。這種方法提高了速度。當然,這隻對在同一命令行中指定

的文件有效,而且不能用於單獨的cURL 之間的調用。

進度指示器


cURL 在操作時通常會顯示一個進度指示器,顯示已傳輸的數據量、傳輸速度和

估計剩餘時間等。


然而,由於cURL 默認在終端上顯示此數據,如果您調用cURL 去做一個向終端

寫入數據的操作,它將禁用進度指示器,否則它會將進度指示信息與輸出的返回

數據混淆在一起。


如果您需要對應HTTP POST 或PUT 請求的進度指示器,您得使用shell 的重定

向操作符(>)、-o [文件名]或其他類似的操作,將返回的數據重定向到文件中。

這與FTP 上傳操作不同,該操作不會向終端輸出任何響應數據。

如果您想用進度“條”代替默認的顯示, -#選項會很有幫助。


選項

對於所有的布爾選項(option),使用--option 來啓用,使用--no-option 來禁用。

也就是說,您使用完全相同的選項名稱,但須加上前綴“no-”然而,在此列表中,

我們通常只會列出並顯示它們的--option。(--no-option 這個概念是在7.19.0版中

添加的。以前大多數選項的開啓/關閉是重複使用相同的命令行選項。)


-a/--append

(FTP/SFTP)當在上傳操作中使用時,此選項將告訴cURL 將內容附加到目標文

件,而不是覆蓋它。如果該文件不存在,將創建一個新文件。請注意,此標誌將

被一些SSH 服務器所忽略(包括OpenSSH) 。


-A/--user-agent <用戶代理字符串>

(HTTP)指定用戶代理(User-Agent)字符串發送給HTTP 服務器。如果這裏沒有設

置爲“ Mozilla/4.0 ”,一些設計的不好的CGI 程序將不能正常工作。如字符串包

含空白字符,則用單引號括出此字符串。此選項也可用-H/--header 來設置。

如果此選項設置超過一次,將使用最近一次的設置。


--anyauth

(HTTP) 告知cURL 自己找出遠程站點聲明支持的最安全的驗證方法並使用之。

由發送一個請求並檢查response-headers 來實現,從而可能誘發額外的網絡流量。

這是用來代替具體驗證方法設定,您可配合--basic、--digest 、--ntlm、與--nagotiate

使用。

請注意,如果您從標準輸入(stdin)上傳,則不推薦使用--anyauth,因爲它可能需

要將數據發送兩次而且屆時客戶端必須支持回捲(rewind)。如從標準輸入(stdin)

上傳時出現此需求,上傳操作將失敗。


-b/--cookie <name=data>

( HTTP )將數據作爲cookie 傳遞給HTTP 服務器。這些數據可能是前次從服務器

Set-Cookie 行返回的。這些數據應是“NAME1=VALUE1; NAME2=VALUE2”這樣

的格式。

如果在行中沒有使用'='符號,那麼它將被視爲一個保存了前次cookie 行的文件

名,如果此文件與前次保存的cookie 行匹配,則它在此會話中將被讀取。使用

這種方法也激活會激活"cookie 解析器" ,它將使cURL 同時記錄傳入的cookie,

這樣可方便的與-L/--location 選項結合使用。被讀取cookie 的文件格式應爲純文

本的HTTP headers 或Netscape/Mozilla 的cookie 文件格式。

請注意,被-b/--cookie 指定的文件只能作爲輸入使用,沒有cookies 會被存儲在

文件中。爲了存儲cookie,用-c/--cookie-jar 選項或您甚至可以用-D/--dump-header

選項把HTTP header 保存到文件中!

如果此選項設置超過一次,將使用最近一次的設置。


-B/--use-ascii

當使用FTP 或LDAP 時啓用ASCII 傳輸。使用FTP 時,也可以使用一個以

";type=A"結尾的URL 來強制執行此選項。此選項導致數據以文本模式發送到

Win32系統的標準輸出(stdout)。


--basic

( HTTP )告知cURL 使用HTTP 基本驗證。這是默認選項,並且該選項通常是無

意義的,除非你用它來覆蓋先前設置的不同的身份驗證方法的選項,(如--ntlm 、

--digest 、或--negotiate) 。


--ciphers <加密方式列表>

(SSL)具體指定在連接中使用哪些加密方式。列表必須是有效的加密方式。在此

網址閱讀SSL 加密方式列表的細節:

http://www.openssl.org/docs/apps/ciphers.html

NSS 加密方式與openssl 和GnuTLS 不同。NSS 加密方式的完整列表在此網址:

http://directory.fedora.redhat.com/docs/mod_nss.html#Directives 的NSSCipherSuite

條目中。

假如此選項已被使用過多次,則最後一次的設置將取代其它的。


--compressed

( HTTP )使用libcurl 支持的一種壓縮算法請求一個壓縮的響應,並返回解壓縮的

文檔。如果使用此選項並且服務器發送了一個不受支持的壓縮方式,cURL 將報

錯。


--connect-timeout <秒>

您連接到服務器所允許花費的最大時間,單位爲秒。只限於連接階段,一旦crul

已經連接,該選項就不起作用了。又見-m/--max-time 選項。

假如此選項已被使用過多次,則使用最後一次的設置。


-c/--cookie-jar <文件名>

指定您想要cURL 完成操作後將所有cookie 寫入哪個文件中。cURL 將寫入之前

從指定文件中讀取的、以及從遠程服務器獲取的所有cookie。如果無cookie 信息,

則不會寫入文件。該文件將使用Netscape 的cookie 文件格式。如果您設置文件

名爲半角單破折號"-",這些cookies 信息會被寫入標準輸出(stdout)。

注意:如果Cookie jar 無法被建立或寫入,整個cURL 操作不會失敗甚至也不會

報錯。使用-v 將得到一個警告顯示,但這將是在可能發生致命錯誤時您唯一可見

的反饋。

假如此選項已使用過多次,則將使用最後一次指定的文件名。


-C/--continue-at <偏移地址>

在指定偏移地址繼續/恢復之前的文件傳輸。給定的偏移地址是一個將被忽略的

確切字節數,在源文件傳輸到目的地之前從文件起始處計算。如果在上傳中使用,

FTP 服務器的SIZE 命令將不能用於cURL。

使用“ -C - ”來告知cURL 在何處及如何自動恢復傳輸。然後使用給定的輸出/輸

入文件來做到這一點。

假如此選項已被使用過多次,則使用最後一次的設置。


--create-dirs

配合-o 選項使用時,cURL 將根據需要建立必要的本地目錄結構。此選項會建立

在-o 選項中提到的目錄,除此以外沒有其它用途。如果-o 選項中涉及的文件名

沒有使用目錄或目錄已存在,則不會建立目錄。

要使用FTP 或SFTP 創建遠程目錄時,請使用--ftp-create-dirs 選項。


--crlf

(FTP)在上傳時將LF 轉換爲CRLF。在MVS 中有用( OS/390 ) 。


-d/--data <數據>

( HTTP )將特定數據POST 到服務器,與在瀏覽器中用戶填寫表單並按提交按鈕

的效果一樣。cURL 使用mime type content-type

application/x-www-form-urlencoded 傳輸數據到服務器。請與-F/--form 比較。

-d/--data 與--data-ascii 相同。如果要post 二進制數據,您應該使用--data-binary

選項。如果要post URL 編碼的表單項,您應該採用--data-urlencode 。

在同一個命令行多次使用該參數,數據塊將被&符號合併提交。因此,使用'-d

name=daniel -d skill=lousy'後提交的數據是'name=daniel&skill=lousy' 。

如果您的數據以字符@開頭,其餘的部分應當是一個用來讀取數據的文件名,或

者您想要cURL 從標準輸入(stdin)讀取數據。該文件的內容必須是經過URL 編碼

的。也可指定多個文件。比如要post 文件foobar,那麼格式是--data @foobar


--data-binary <數據>

( HTTP )post 二進制數據。

如果您的數據以字符@開頭,其餘的部分應當是個文件名。post 的數據使用

--data-ascii 類似的方式,區別是換行是保留的,未作轉換。

如果此選項被多次使用,則第一次定義的數據會附加到-d/--data 所描述的數據

後。


--data-urlencode <數據>

( HTTP )與--data 選項相同,唯一的差別是要採用url 編碼。(在7.18.0版加入)

要做CGI 兼容,<數據>部分應由name 以及其後的分隔符和指定內容組成。該<

數據>部分使用下列語法:

content

將使cURL 使用url-encode 編碼內容並傳遞。只是要小心,這樣的內容不包含任

何=或@符號 ,所以這將會使語法與下面其他情況相匹配。

=content

將使cURL 使用url-encode 編碼內容並傳遞。前面的=號不包含在數據中。

name=content

將使cURL 使用url-encode 編碼內容部分並傳遞。請注意,name 的部分已經預

先經過URL-encoded 編碼了。

@filename

將使cURL 從給定的文件(包含任何換行符的)中讀取數據,URL-encode 編碼數據

並在post 時傳遞給它。

name@filename

將使cURL 從給定的文件(包含任何換行符的)中讀取數據,URL-encode 編碼數據

並在post 時傳遞給它。name 部分獲得相同的附加, 致使

name=urlencoded-file-content。請注意,name 已經預先經過URL-encoded 編碼了。


--digest

( HTTP )允許HTTP Digest 認證。這是一個避免密碼以明文傳送的認證。使用此

選項與-u/--user 選項組合來設置用戶名和密碼。又見--ntlm 、--negotiate 和

--anyauth 相關選項。

如果多次使用該選項,下列事件不作任何區別。


--disable-eprt

( FTP )告知cURL 在做主動FTP 傳輸時禁用ERPT 和LPRT 命令。cURL 在使用

PORT 命令前,通常會先嚐試使用EPRT ,然後LPRT,但使用此選項後,就會

先使用PORT 命令了。EPRT 和LPRT 是原FTP 協議的擴展,並可能無法在所有

的服務器上工作,但它們以更好的方式擁有比傳統的PORT 命令更多的功能。

自cURL7.19.0起,--eprt 可以用來再次啓用EPRT,--no-eprt 是--disable-eprt 的別

名。

禁用EPRT 僅改變主動行爲。如果你想切換到被動模式(passive mode)請您不要使

用-P/--ftp-port 或強制與--ftp-pasv 一起使用。


--disable-epsv

( FTP )告知cURL 在做被動FTP 傳輸時禁用EPSV 命令。cURL 在使用PASV 命

令前,通常會先嚐試使用EPSV,但使用此選項後,就不會先嚐試EPSV 命令了。

自cURL7.19.0起,--epsv 可以用來再次啓用EPSV,--no-epsv 是--disable-epsv 的

別名。

禁用EPSV 僅改變被動的行爲。如果想切換到主動模式下您需要使用


-P/--ftp-port 。

-D/--dump-header <文件>

將協議頭寫入指定文件。

此選項是方便您保存HTTP 網站發送給您的HTTP header 時用的。保存協議頭的

cookie 數據就可被第二個cURL 通過-b/--cookie 選項調用!然而-c/--cookie-jar 選

項還是更好的儲存cookie 的方法。

當使用FTP 時,FTP 服務器的應答行被當作是“協議頭”,從而被保存。

假如此選項已被使用過多次,則使用最後一次的設置。


-e/--referer <URL>

( HTTP )向HTTP 服務器傳送“參考頁”的信息。此選項當然也可以與-H/--header

標記一起使用。當與-L/--location 一起使用時,您可以附加“;auto”到--referer URL,

使curl 自動設置上一個URL,當它後面跟隨Location: header 時。";auto"字符串

可以單獨使用,即使您沒有設置初始的--referer。

假如此選項已被使用過多次,則使用最後一次的設置。


--engine <name>

爲加密操作選擇openssl 加密引擎。使用--engine list 打印編譯時所支持引擎的清

單。請注意,並非所有(或沒有)引擎可用在運行時。


--environment

(僅在RISC 操作系統)設置了一系列的環境變量,使用-w 選項支持的名稱,允許

運行cURL 後更容易的提取有用的信息。


--egd-file <文件>

(SSL)爲Entropy Gathering Daemon 套接字指定路徑名。此套接字用於爲SSL 連

接產生隨機種子。又見--random-file 的選項。


-E/--cert <證書[:密碼]>

( SSL )告知cURL 當通過HTTPS 或FTPS 獲取文件時使用指定的證書文件。證

書必須是PEM 格式。如果沒有指定可選密碼,將在終端上提示輸入。注意,此

選項假設的“證書”文件,是私鑰和私人證書連結!見--cert 和--key 單獨指定他們。

如果curl 使用NSS SSL 庫編譯,那麼此選項告知curl 用在由環境變量SSL_DIR(或

默認的/etc/pki/nssdb)定義的NSS 數據庫中的證書別名。如果NSS PEM PKCS#11

模塊( libnsspem.so)是可用的,那麼將加載PEM 文件。

假如此選項已被使用過多次,則使用最後一次的設置。


--cert-type <類型>

( SSL )告知curl 所提供證書的類型。PEM、DER 和ENG 是可被識別的類型。如

果沒有指定,將假定爲PEM。

假如此選項已被使用過多次,則使用最後一次的設置。


- cacert <CA certificate>

( SSL )告知curl 使用指定的證書文件以驗證peer。該文件可能包含多個CA 證書。

證書必須爲PEM 格式。通常curl 使用內置的默認文件,所以此選項通常用於改

變默認的文件。

curl 確認已設置的名爲'cURL_CA_BUNDLE'的環境變量,並使用給定的路徑作爲

一個路徑捆綁的CA 證書。此選項會覆寫該變量。

Windows 版本的curl 會自動尋找文件名爲'curl-ca-bundle.crt' 的CA 證書,無論是

在cURL.exe 同一目錄下,或在當前工作目錄下,或在任何文件夾您的PATH 中

的任意文件夾下。

如果curl 使用NSS SSL 庫編譯,那麼此選項告知curl 用在由環境變量SSL_DIR(或

默認的/etc/pki/nssdb)定義的NSS 數據庫中的證書別名。如果NSS PEM PKCS#11

模塊( libnsspem.so)是可用的,那麼將加載PEM 文件。

假如此選項已被使用過多次,則使用最後一次的設置。


--capath <CA 證書目錄>

( SSL )告知curl 使用指定的證書目錄以驗證peer。該證書必須是PEM 格式的,

而且目錄必須已使用OpenSSL 提供的c_rehash 工具提供處理過。如果--cacert 指

定的文件包含許多CA 證書,使用--capath 可以讓curl 使SSL 連接效率遠遠高於

使用--cacert。

假如此選項已被使用過多次,則使用最後一次的設置。


-f/--fail

( HTTP )服務器出錯時屏蔽錯誤信息(無任何輸出)。這樣做以便更好的支持腳本

等能更好的處理失敗的嘗試。在正常情況下當一個HTTP 服務器無法提供文檔

時,它將返回一個解釋其原因的HTML 文件。此標誌將防止curl 輸出此文檔,

並返回錯誤22 。

這種方法不是萬無一失的,有非成功響應代碼通過的場合,尤其是參與驗證時(響

應代碼401和407 ) 。


--ftp-account [數據]

( FTP )當FTP 服務器在提供用戶名和密碼後請求“帳戶數據”,此數據通過ACCT

命令發送。(在7.13.0 版加入)

如果該選項使用過兩次,則第二次將覆蓋上一次的使用。


--ftp-create-dirs

(FTP / SFTP)當FTP 或SFTP 的URL/操作使用了一個當前不存在於服務器上的路

徑時,標準的crul 行爲會失敗。使用此選項,curl 將嘗試創建丟失的目錄。


--ftp-method [方法]

( FTP )控制curl 應使用的獲取FTP 服務器中文件的方法。該方法的變量應是以

下的選項:

multicwd

curl 爲每一個給定URL 的路徑運行一個單一的CWD 操作。目錄結構複雜的話

這將意味着很多條命令。這是RFC1738所描述的。這是預設的,但最慢的行爲。

nocwd

curl 完全執行CWD 操作,而是使用SIZE、RETR、STOR 等命令並向服務器發

送所有這些命令的完整的路徑。這是最快的行爲。

singlecwd

curl 爲完整的目標目錄做一次CWD 操作,然後“正常地”操作文件(如在multicwd

中一樣)。這比' nocwd '符合標準,但又比' multicwd '開銷要小。

(在7.15.1版加入)


--ftp-pasv

( FTP )使用被動模式的數據連接。被動模式是內部默認的行爲,但使用此選項可

以用來覆蓋上一個-P/--ftp-port 選項。(在7.11.0 版加入)

如果此選項被多次使用,下列事件不作任何區別。取消強制被動模式是不可行的,

但您屆時必須強制再次以正確的-P/--ftp-port 取代。

被動模式意味着curl 將先嚐試EPSV 命令,然後執行PASV 命令,除非使用了

--disable-epsv 選項。


--ftp-alternative-to-user <命令>

( FTP )如果使用USER 和PASS 命令認證失敗,則發送此命令。當使用客戶端證

書鏈接到FTPS 上的Tumbleweed 的安全傳輸服務器時,使用“SITE AUTH”將告

知服務器從證書檢索用戶名。(在7.15.5版加入)


--ftp-skip-pasv-ip

( FTP )在curl 連接到數據連接時,告知cURL 不要使用服務器在響應curl 的PASV

命令時建議的IP 地址。相反curl 將重用在控制連接時使用的相同的IP 地址。(在

7.14.2版加入)

如果PORT、EPRT 或EPSV 是用來代替PASV 的話,此選項無效。


--ftp-ssl

(FTP)嘗試使用SSL/TLS 的FTP 連接。如果服務器不支持SSL/TLS 則恢復到一

個非安全連接。爲不同級別的加密需求又見--ftp-ssl-control 和--ftp-ssl-reqd。(在

7.11.0 版加入)


--ftp-ssl-control

(FTP)請求SSL/TLS 的FTP 登錄,不加密傳輸。允許安全認證,但爲了傳輸效率

不加密數據傳輸。如果服務器不支持SSL / TLS 的則傳輸失敗。(在7.16.0版加

入)


--ftp-ssl-reqd

( FTP )請求SSL / TLS 的FTP 連接。如果服務器不支持SSL / TLS 的則終止連接。

(在7.15.5版加入)


--ftp-ssl-ccc

( FTP )驗證後使用CCC(Clear Command Channel)關閉SSL / TLS 層。其餘的控制

通道通信將不加密。此操作允許NAT 路由跟隨FTP 事務。默認爲被動模式。選

項的其他方式見--ftp-ssl-ccc-mode 。(在7.16.1 版加入)


--ftp-ssl-ccc-mode [active/passive]

( FTP )使用CCC(Clear Command Channel)設置CCC 模式。被動模式不接受

shutdown 命令,而是等待服務器這樣做,也不會迴應服務器的shutdown 命令。

主動模式接受shutdown 命令並等待服務器迴應。(在7.16.2版加入)


-F/--form <name=content>

( HTTP )curl 模擬填寫表格並按下提交按鈕。這將使curl 根據RFC1867使用

Content-Type multipart/form-data 來POST 數據。這將使二進制文件等得以上傳。

強制’content‘部分爲文件,在文件名前加上前綴@號。如只需從文件中得到content

部分的內容,在文件名前使用前綴<。@與<的區別在與,@讓一個文件在POST

動作中作爲文件上傳,而<則僅從文件中獲得內容作爲文本域。

例如,如果要發送密碼文件到服務器,'password'是表單域的名稱,這裏將填入

/etc/passwd 文件:

curl -F password=@/etc/passwd www.mypasswords.com

如果要在標準輸入(stdin)中獲取輸入來代替文件,則在應提供文件名的位置上使

用-代替。這同樣適用於@和<的結構。

您也可以使用';type='告知curl 是什麼Content-Type,類似於:

curl -F "[email protected];type=text/html" url.com

或是:

curl -F "name=daniel;type=text/foo" url.com

您也可以設定'filename='來明確地變更名稱域的一個文件上傳部分,就像這樣:

curl -F "file=@localfile;filename=nameinpost" url.com

更多的實例和細節見手冊。

此選項可以多次使用。


--form-string <name=string>

( HTTP )類似--form,除了命名參數的值字符串是字面上的意義。以' @ '和' < '開

頭字符以及值中的';type='字符串沒有特殊的含義。如果字符串值可能碰巧觸發

--form 的' @ '或' < '特性,則在--form 中優先使用此參數。


-g/--globoff

此選項關閉“URL 通配符分析器” 。當設定此選項,您可以指定包含{}[]字符的

的URL,而不被curl 本身解釋。請注意,這些字符不是普通合法的URL 內容,

但應根據URI 的標準編碼。


-G/--get

此選項將所有-d/--data 或--data-binary 的指定數據被用在HTTP GET 請求而不是

POST 請求,否則將使用POST。這些數據與'?'分隔符附加在URL 中。

如果結合-I 使用,POST 數據將取代並與HEAD 請求一起附加到URL 中。

如果此選項被多次使用,下列事件不作任何區別。這是因爲撤消GET 是沒有道

理的,但是您應當選擇您較喜歡的方法來取代。


-h/--help

使用幫助。


-H/--header <header>

( HTTP )在獲取網頁時使用額外的header。您可以指定任何數量的額外的header。

請注意,如果您要添加與curl 內部使用的header 名稱相同的自定義header,您

的外部header 設置將取代內定的。這樣,您就能做比curl 一般能做到的更多的

事。假如您不完全瞭解您在做的事,那麼就不應當取代內部設定的header。在冒

號右側給出一個無內容的替換來移除一個內部的header,如: -H “主機: ” 。

cURL 將確保您添加/取代的每一個header 都與正常的行尾標記一同發送,因此

您不應把它作爲作爲header 的內容添加進來:不添加換行符或回車,它們只會

把您的東西弄得一團糟。

又見-A/--user-agent 和-e/--referer 選項。

此選項可多次使用來添加/替換/移除多個header。


- hostpubmd5 <md5>

傳遞一個包含32個十六進制數字的字符串。該字符串應是遠程主機公鑰的128位

MD5校驗,除非md5sums 匹配,否則cURL 將拒絕連接。此選項僅用於SCP 和

SFTP 傳輸。(在7.17.1版中加入)


--ignore-content-length

( HTTP )忽略Content-Length header。運行Apache1.x 的服務器對大於2G 字節的

文件會報告Content-Length 不正確,此選項對此很有用。


-i/--include

( HTTP )在輸出中包含的HTTP-header。HTTP-header 中包含了像是服務器名

稱、文檔日期、HTTP 協議的版本和更多信息...


--interface<名稱>

使用指定界面執行操作。您可以輸入界面名稱, IP 地址或主機名。一個例子可

能如下所示:

curl --interface eth0:1 http://www.netscape.com/

假如此選項已被使用過多次,則使用最後一次的設置。


-I/--head

(的HTTP / FTP /檔案)只獲取HTTP-header!HTTP 服務器功能命令HEAD,使

用此選項只獲取文檔的header。當使用的FTP 或FILE 文件,cURL 只顯示文件

大小和最後修改時間。


-j/--junk-session-cookies

( HTTP )當curl 被告知給定文件中讀取cookie 時,此選項會放棄所有“會話

cookie ” 。這將基本上與開始一個新會話起到相同的效果。典型的瀏覽器關閉時

總是捨棄會話cookie 的。


-k/--insecure

( SSL )此選項明確允許cURL 執行“不安全” SSL 連接和傳輸。所有的SSL 連接

使用捆綁默認安裝的CA 證書試圖使其安全。這使得除非使用-k/--insecure,否則

所有連接被認爲是“不安全”的而失敗。

進一步的細節請看網上資源: http://cURL.haxx.se/docs/sslcerts.html


--keepalive-time <秒>

此選項設定一個連接在發送保持活動探針之前的空閒時間和獨立的保持活動探

針的間隔。這是當前在操作系統提供的TCP_KEEPIDLE 和TCP_KEEPINTVL 套

接字選項有效的(意味着Linux、AIX、HP-UX 等等)。如果使用--no-keepalive 選

項,則此選項不發生效力。(在7.18.0版加入)

如果多次使用此選項,則最後一次的設定起作用。


--key <私鑰>

(SSL / SSH)私鑰文件名。允許您提供在此單獨的文件中提供您的私鑰。

假如此選項已被使用過多次,則使用最後一次的設置。


--key-type <類型>

( SSL )私鑰文件類型。指定--key 輸入的私鑰類型。支持的類型有DER、PEM 和

ENG。如果沒有指定,將假定爲PEM。

假如此選項已被使用過多次,則使用最後一次的設置。


--krb <安全等級>

( FTP )啓用並使用Kerberos 身份驗證。必須輸入安全等級,應該是'clear' 、'safe' 、

'confidential'、或'private' 。如果您指定的安全等級不在以上幾種以內,則將使用

'private'代替。

此選項需要有在berberos4或GSSAPI(GSS-Nagotiate)支持下編譯的庫文件。這並

不是很常見。使用-V/--version ,看看您的cURL 是否支持。

假如此選項已被使用過多次,則使用最後一次的設置。


-K/--config <配置文件>

指定用來讀取cURL 參數的配置文件。此配置文件是一個保存了命令行參數的文

本文件,使用時就像參數被書寫在實際的命令行中一樣。選項及其參數必須在同

一配置文件的行中,由空格、冒號、等號或其他連接符號組成(但首選分隔符是

等號)。如果該參數中包含空格,則必須使用引號括出。在雙引號中可用以下轉

義符號:\\, \", \t, \n, \r 與\v。在其它任何字母前的反斜槓將被忽略。如果配置

文件行首以' # '字符開始,則此行的剩餘部分將被視爲註釋。在配置文件中,

每行請只寫入一個選項。

如爲-K/--config 指定文件名爲' - ' 則cURL 會從標準輸入(stdin)獲取文件名。

請注意,您需要使用--url 選項才能在配置文件中指定一個URL,而不是簡單的

在寫上一個URL。因此,它可能與此類似:

url= “ http://cURL.haxx.se/docs/ ”

長選項名可在配置文件中以沒有開頭的雙破折號"--"的形式存在。

當cURL 被引用時,它總是(除非使用-q 選項)檢查是否有默認的配置文件,如有

則使用。將在下列位置按順序查找默認的配置文件:

1 )cURL 曲試圖找到“HOME 目錄”:它首先檢查cURL_HOME ,然後在HOME

環境變量中查找。如果做不到這一點,它會在類UNIX 系統中使用getpwuid()(返

回當前系統用戶的HOME 目錄) 。在Windows 中,它會檢查APPDATA 變量或

檢查'%USERPROFILE%\Application Data'以作爲最後的手段。

2 )在Windows 中,如果HOME 目錄中沒有_curlrc 文件,它將檢查cURL 可執行

文件所在目錄。在類UNIX 系統中,它只是嘗試從確定的HOME 目錄里加

載.curlrc。

# --- 示例文件--- #這是一個註釋url = "curl.haxx.se" output = "curlhere.html"

user-agent = "superagent/1.0"

# 攫取另一個URL url = "curl.haxx.se/docs/manpage.html" -O referer =

"http://nowhereatall.com/" #- -- 示例文件結束---

此選項可以多次使用,以加載多個配置文件。


--libcurl <文件>

在任何普通cURL 的命令行附加此選項,可將livcurl 使用的源代碼寫入文件,就

像您在命令行操作中做的一樣!

注意:可能不適當-F 選項和發送多重formpost ,所以在這種情況下,輸出程序

將丟失curl_formadd (3) 所必要的調用,並有可能更多其它的丟失。

假如此選項已被使用過多次,則將使用最後一次給定的文件名。(在7.16.1版加

入)


--limit-rate <速度>

指定cURL 使用的最高傳輸率。如果您的帶寬有限且您不想讓您的傳輸佔據整個

帶寬,那麼此功能是有用的。

除非給定後綴,否則默認速度單位爲字節/秒。加上' k '或' K '後綴則以千字節計

算, 'm'或M '則以兆字節計算,而'g'或' G'則以千兆字節計算。例子: 200K, 3m

和1G。

給定的速率是整體傳輸過程的平均值。這意味着,cURL 可能在短時間有爆發傳

輸速度,但隨着時間的推移它不會超過給定的速率。

如果您還使用-Y/--speed-limit 選項,該選項將優先考慮,並可能使限速略有下降,

以幫助保持速度限制邏輯工作。

假如此選項已被使用過多次,則使用最後一次的設置。


-l/--list-only

( FTP )當列出FTP 目錄,此開關顯示只有名稱的列表。尤其是當普通目錄視圖沒

有使用標準外觀或格式,而您需要機器解析FTP 目錄內容時,此選項非常有用。

此選項發送FTP NLST 命令。有些FTP 服務器只對NLST 命令列出文件列表,

不包括子目錄和符號連接。


--local-port <端口號>[-num]

設置連接使用的首選端口號或本地端口範圍。請注意,端口號是一種稀缺資源,

繁忙時,請將端口範圍縮小來避免不必要的連接失敗。(在7.15.2版加入)


-L/--location

(HTTP / HTTPS)如果服務器報告所請求的網頁已經轉移到了其它的位置(位置的

指示根據:HTTP-header 和3XX 響應代碼) ,此選項將使cURL 重新向新位置發

起請求。如果與-i/--include 或-I/--head 一起使用,將顯示所有請求的的網頁

HTTP-header。當使用身份驗證時,cURL 只向初始的主機發送憑據。如果需要

cURL 重定向到不同的主機,將無法攔截用戶名+密碼。就如何改變這種情況又

見--location-trusted。您可以使用--max-redirs 選項限制後續重定向數目。

當cURL 跟隨重定向且請求不是簡單的GET (例如POST 或PUT ) ,如果HTTP

響應碼是301、302或303的話,它將做GET 請求。如果響應代碼是任何其他3xx

代碼,cURL 將重新使用相同的方法發送請求。


--location-trusted

(HTTP / HTTPS)與-L/--location 相同,但將允許將用戶名+密碼發送到該站點可

能重定向到的所有主機。這可能會也可能不會引入安全漏洞,如果網站將您重定

向到一個您會發送您的身份驗證信息(這種情況下是明文的HTTP 的Basic 認證)

到該位置的網站。


--max-filesize <字節數>

指定下載文件的最大尺寸(以字節爲單位)。如果請求的文件尺寸大於此值,傳輸

將無法啓動,cURL 返回退出代碼63。

注意:在下載期間,文件尺寸並不總是已知的。對於這樣的文件,哪怕文件傳輸

大小最終超過給定限制,此選項也不會產生作用。此選項對FTP 和HTTP 傳輸

都有效。


-m/--max-time <秒>

您允許操作花費的最大時間,以秒計算。這是非常有用的,以防止您的批處理工

作由於掛了幾個小時,導致網絡速度慢或鏈接丟失。又見--connect-timeout 選項。

假如此選項已被使用過多次,則使用最後一次的設置。


-M/--manual

手冊。顯示幫助手冊。


-n/--netrc

使cURL 在用戶HOME 目錄中掃描.netrc ( 在Windows 下是_netrc )文件,查找登

錄名和密碼。這通常是用於Unix 操作系統的FTP。如果是HTTP ,cURL 將使

用戶認證。文件格式詳見netrc(4)或FTP(1)。如果文件權限(不應該同爲world-

或group-可讀)不正確,cURL 不會給出任何反饋。環境變量“HOME”通常用來尋

找主目錄。

一個迅速和非常簡單的例子,如何設置一個.netrc 文件,使cURL 使用用戶名

'myself'和密碼'secrct'連接到FTP 服務器host.domain.com 應類似於:

machine host.domain.com login myself password secret


--netrc-optional

與--netrc 非常相似,但這一選擇使.netrc 變爲可選的,而不是--netrc 選項強制性

的。


--negotiate

( HTTP )啓用GSS-Nagotiate 驗證。GSS-Nagotiate 方法是由微軟設計,並在他們

的Web 應用程序中使用。這主要是指支持Kerberos5身份認證,但還可使用另一

個驗證方法。欲瞭解更多信息,請參閱IETF 草案,draft-brezak-spnego-http-04.txt。

如果您需要爲您的代理身份驗證開啓Negotiate,請使用--proxy-negotiate 選項。

此選項要求GSSAPI 支持編譯的庫文件。這並不是很常見。使用-V/--version ,

看看您的版本是否支持GSS-Negotiate。

當使用此選項時,您還必須提供一個虛假的-u/--user 選項來激活身份驗證代碼。

發送'-u :'當做用戶名與密碼已足夠,- u 選項實際沒有使用。

如果此選項被多次使用,下列事件不作任何區別。


-N/--no-buffer

禁用輸出流的緩衝。在正常工作的情況下,cURL 將使用標準的緩衝輸出流。將

產生的效果是將數據以塊的形式輸出,當數據到達時是不必精確的。使用此選項

將禁用該緩衝。

請注意,這是記錄在案的否定選項。您可使用--buffer 選項來執行該緩衝。


--no-keepalive

禁止TCP 連接時使用保持活動信息,默認情況下cURL 是允許使用的。

請注意,這是記錄在案的否定選項。您可使用--keepalive 選項執行保持活動。


--no-sessionid

(SSL)禁用cURL 使用SSL 會話標識(session_ID)緩存。默認情況下所有傳輸都是

使用該緩存的。請注意,當重用SSL 會話緩存時,雖然不會破壞任何傳輸,但

是有可能會破壞SSL 實現。可能需要禁用此選項您纔可能完成該操作。(在7.16.0

版加入)

請注意,這是記錄在案的否定選項。您可以因此使用--sessionid 執行會話標識緩

存。


- noproxy <不需代理的主機列表>

無需使用代理的主機列表,如有指定,則使用逗號分隔。單一通配符是*號字符,

將匹配所有主機,並禁用代理。此列表中的每個名字應符合一個包含主機名的域

名,或主機本身。例如,local.com 將匹配local.com、local.com:80和www.local.com,

但不匹配www.notlocal.com。(在7.19.4版加入) 。


--ntlm

(HTTP)啓用NTLM 驗證。NTLM 是由微軟設計並在其IISIIS Web 服務器中使用

的身份驗證方法。這是一個私有的協議,由一幫聰明傢伙做了逆向工程。cURL

上的實現基於他們的努力。這種行爲實際是不值得支持的,您應當鼓勵使用

NTLM 的人切換到其它大衆化並有記錄的身份驗證方法,比如Digest 來代替

NTLM。

如果您想啓用NTLM 做爲您的代理身份驗證,則使用--proxy-ntlm 選項。

此選項要求編譯時使用SSL 庫支持。使用-V/--version,看看您的cURL 是否支持

NTLM 身份驗證。

如果此選項被多次使用,下列事件不作任何區別。


-o/--output <文件>

將獲取的遠程文件輸出到文件中,而不是輸出到屏幕上(stdout)。如果您使用{}

或[]定義了批量獲取文件,則您可以在<文件>選項中用#後跟隨數字的格式來定

義文件名。這樣實際文件名中的#將被多個URL 中的當前字符串代替。如:

curl http://{one,two}.site.com -o "file_#1.txt" 則輸出file_one 和file_two 文件

或使用多個變量如:

curl http://{site,host}.host[1-5].com -o "#1_#2" #1將被"site"或"host"代替,#2將被

1-5之間的數字代替

您處理多少條URL 就可以使用多少次該選項。

又見--create-dirs 來動態建立本地目錄。指定輸出到'-'(單破折號)將強制輸出到屏

幕上(stdout)。


-O/--remote-name

直接以遠程文件名保存本地文件。(只使用在URL 中指定了文件名部分,不包括

路徑。)

用於保存的遠程文件由給定URL 提取。

您處理多少條URL 就可以使用多少次該選項。


--remote-name-all

此選項改變默認動作到所有給定的待處理URL , 就像爲每條URL 指定

-O/--remote-name 參數一樣。因此,如果您要在使用了--remote-name-all 後再爲某

個特定URL 禁用它時,您必須使用"-o -"或--no-remote-name 選項。(在7.19.0 版

加入)


--pass <密碼>

(SSL / SSH)私鑰的密碼。

假如此選項已被使用過多次,則使用最後一次的設置。


--post301

當跟隨301重定向時,告知cURL 遵循RFC 2616/10.3.2並不要將POST 請求轉換

成GET 請求。不符合RFC 的行爲是普遍存在於Web 瀏覽器中的,因此cURL

默認做上述轉換來保持一致。然而,一臺服務器有可能做一個POST 請求來保持

在這樣一個重定向後的POST。此選項只有在使用-L/--location 時有意義(在

7.17.1版加入)


--post302

當跟隨302重定向時,告知cURL 遵循RFC 2616/10.3.2並不要將POST 請求轉換

成GET 請求。不符合RFC 的行爲是普遍存在於Web 瀏覽器中的,因此cURL

默認做上述轉換來保持一致。然而,一臺服務器有可能做一個POST 請求來保持

在這樣一個重定向後的POST。此選項只有在使用-L/--location 時有意義(在

7.19.1版加入)


--proxy-anyauth

告知cURL 在連接給定代理服務器時挑選一個合適的身份驗證方法。可能會導致

額外的請求/應答往返。(在7.13.2 版加入)


--proxy-basic

告知cURL 在連接給定代理服務器時選擇基本HTTP 身份驗證。使用--basic 選項

爲遠程主機開啓基本HTTP 驗證。基本身份驗證是cURL 使用代理服務器時的默

認身份驗證方法。


--proxy-digest

告知cURL 在連接給定代理服務器時選擇Http Digest 身份驗證。使用--digest 選

項爲遠程主機開啓HTTP Digest 驗證。


--proxy-negotiate

告知cURL 在連接給定代理服務器時選擇HTTP Negotiate 身份驗證。使用

--negotiate 選項爲遠程主機開啓HTTP Negotiate 驗證。(在7.17.1版中加入)


--proxy-ntlm

告知cURL 在連接給定代理服務器時選擇HTTP NTLM 身份驗證。使用--ntlm 選

項爲遠程主機使用NTLM 驗證。


--proxy1.0 <代理主機[:端口]>

使用指定的HTTP 1.0代理。如未指定端口號,則假定使用1080端口。

和HTTP 代理選項(-x/--proxy)的唯一區別,是此選項嘗試指定HTTP 1.0協議而不

是默認的HTTP 1.1協議的CONNECT 通過代理服務器。


-p/--proxytunnel

當使用HTTP 代理( -x/--proxy )時,此選項將試圖使非HTTP 協議通過代理隧道,

而非使用類似HTTP 的操作行爲。代理隧道的方法是通過HTTP 代理的

CONNECT 發起請求,請求代理允許直接連接到cURL 需要通過的隧道的遠程端

口號來實現的。


--pubkey<公鑰>

(SSH)公鑰的文件名。允許您在單獨的文件中提供您的公鑰。

假如此選項已被使用過多次,則使用最後一次的設置。


-P/--ftp-port <地址>

(FTP)當連接到FTP 服務器時,此選項讓cURL 使用主動模式。在實踐中,cURL

使服務器連接到客戶端的指定地址和端口,而被動模式要求服務器爲其設置一個

IP 地址和端口來連接。<地址>應該是以下之一:

界面

即"eth0" 指定您要使用的網絡界面ip 地址(只在Unix 下有效)

IP 地址

即“ 192.168.10.1 ”指定確切的IP 地址

主機名稱

即“ my.host.domain ”指定主機名稱

-

使cURL 選擇已被當前控制連接使用的相同IP 地址。

假如此選項已被使用過多次,則使用最後一次的設置。--ftp-pasv 選項禁用PORT

命令。使用參數--disable-eprt 嘗試用EPRT 命令代替PORT 命令。EPRT 其實就

是PORT 的升級版。

從7.19.5版開始,你可以在地址的右側附加":[開始]-[結束]",指定cURL 使用

的TCP 端口範圍。從低到高指定端口的範圍。單一端口號也能工作,但是請注

意如果端口無法使用,會增加失敗的風險。


-q

如果作爲命令行上第一個參數,則不會讀取和使用crulrc 配置文件。配置文件的

默認搜索路徑詳情見-K/--config,。


-Q/--quote <命令>

(FTP / SFTP)發送任意指令到遠程FTP 或SFTP 服務器。quote 命令在傳輸發生之

前發送(就在FTP 傳輸中最初的PWD 命令後,必須準確) 。要使命令在成功傳

輸後發送,則爲它們加前綴破折號'- '。要使命令在libcurl 改變工作目錄後而又在

傳輸命令前發送,則爲它們加前綴'+'(只支持FTP 協議) 。您可以指定任意數量

的命令。如果服務器返回一個失敗的命令,整個操作將中止。您必須以RFC959

定義的正確語法向FTP 服務器發送FTP 命令,或者向SFTP 服務器發送下列命

令。此選項可以多次使用。

SFTP 一個二進制協議。不同於FTP,libcurl 解釋SFTP 的quote 命令後再將它們

發送到服務器。以下列出所有支持的SFTP quote 命令:

chgrp group file

該chgrp 命令將以group 操作符指定的組ID 設置給以file 操作符指定的文件名。

group 操作符應爲一個十進制整數的組ID。

chmod mode file

該chmod 命令修改文件屬性。mod 操作符應爲一個八進制整數的屬性數字。

chown user file

該chown 命令設置以file 操作符定義的文件所有者爲以user 操作符指定的用戶

ID。user 操作符應爲一個十進制整數的用戶ID。

ln source_file target_file

ln 和symlink 命令創建一個符號鏈接,從target_file 位置指向source_file 位置。

mkdir directory_name

mkdir 命令創建名爲directory_name 的目錄。

pwd

pwd 命令返回當前工作目錄的絕對路徑。

rename source target

rename 命令將源(source)目錄或文件的名稱重命名爲目標(target)目錄或文件的名

稱。

rm file

使用rm 命令刪除file 操作符指定的文件。

rmdir directory

rmdir 命令移除directory 操作符指定的非空目錄。

symlink source_file target_file

見ln。


--random-file <文件>

(SSL)指定包含將被視爲隨機數據的文件路徑。這些數據將作爲SSL 連接的隨機

數引擎的種子。又見--egd-file 選項。


-r/--range <範圍>

(HTTP/FTP/SFTP/FILE)該選項指定從HTTP/1.1、FTP 或SFTP 服務器又或本地

文件下載字節的範圍,常應用於分塊下載文件。指定範圍可有多種表示。

0-499指定前500字節

500-999指定第二500字節

-500指定最後500字節

9500 -指定從9500字節開始的全部字節。

0-0,-1只指定第一個和最後一個字節(*) (H)

500-700,600-799從偏移500字節開始的300字節(H)

100-199,500-599指定兩個不同的100字節的範圍(*)(H)

(*) =請注意,這將導致服務器回覆多重響應!

在‘開始-停止’這樣的語法中只能使用數字(0-9)。如果指定了非數字的字符,則取

決於服務器設置,會有不可預料的迴應。

您還應該瞭解,許多HTTP/1.1服務器沒有啓用此項功能,因此,當您試圖獲得

該範圍的文件內容時,會得到整個文件。

FTP 和SFTP 分塊下載只支持簡單的‘開始-停止’語法(其中一個數字是可以省略

的)。FTP 的使用取決於擴展FTP 命令SIZE。

假如此選項已被使用過多次,則使用最後一次的設置。


--raw

使用此選項禁用所有內部內容的HTTP 解碼或傳輸編碼,並轉而讓其以原格式傳

遞。(在7.16.2版加入)


-R/--remote-time

使用此選項,libcurl 將試圖尋找遠程文件的時間戳,使本地文件獲得與其相同的

時間戳。


--retry <次數>

設置cURL 在傳輸時遇到暫態錯誤後重試的次數,超過此次數則放棄傳輸。將次

數設置爲0則使cURL 不做重試(這是默認值)。暫態誤差是指:傳輸超時、FTP 5xx

響應碼或HTTP 5xx 響應碼。

當cURL 重試傳輸時,先等待一秒。然後對於所有即將發起的重試請求,此等待

時間將加倍直到到達10分鐘。此10分鐘的等待將會是剩餘重試請求之間的延遲。

使用--retry-delay 選項禁用此退避時間(Backoff Time)指數算法。要限制允許重試

的總時間,又見--retry-max-time。(在7.12.3版加入)

如果多次使用此選項,則最後一次的設定的起作用。


--retry-delay <秒>

此選項設置傳輸過程遇到暫態錯誤時,cURL 在每次重試前等待的時間(它改變了

重試請求之間默認的退避時間(Backoff Time)算法)。只有當使用--retry 選項時,

此選項才起作用。將此設置爲0則cURL 使用默認的退避時間(Backoff Time)。(在

7.12.3版加入)

如果多次使用此選項,則最後一次的設定起作用。


--retry-max-time <秒>

在發起第一次傳輸前,重試計時器將重置。重試將像往常一樣進行(見--retry ) ,

只要計時器還沒有到達此給定限制。請注意,如果計時器還沒有達到限制時間,

該請求將被執行。在執行期間,它需要的時間可能比給定的更長。要限制單次請

求的最大時間,請使用-m/--max-time 參數。將此選項設置爲0則不作超時重試。

(在7.12.3版加入)

如果多次使用此選項,則最後一次的設定起作用。


-s/--silent

安靜模式。不顯示進度表或錯誤信息。使cURL 不反饋信息。


-S/--show-error

當與-s 選項一起使用時,cURL 在其出錯時顯示一條出錯信息。


--socks4 <主機[:端口]>

使用指定的SOCKS4代理。如未指定端口號,則假定是1080端口。(在7.15.2版加

入)

此選項會覆蓋任何先前使用的-x/--proxy 選項,因爲它們是相互排斥的。

假如此選項已被使用過多次,則使用最後一次的設置。


--socks4a <主機[:端口]>

使用指定的SOCKS4a 代理。如未指定端口號,則假定是1080端口。(在7.18.0 版

加入)

此選項會覆蓋任何先前使用的-x/--proxy 選項,因爲它們是相互排斥的。

假如此選項已被使用過多次,則使用最後一次的設置。


--socks5-hostname <主機[:端口]>

使用指定的SOCKS5代理(並讓代理解析主機名稱) 。如未指定端口號,則假定

是1080端口。(在7.18.0 版加入)

此選項會覆蓋任何先前使用的-x/--proxy 選項,因爲它們是相互排斥的。

假如此選項已被使用過多次,則使用最後一次的設置。(此選項曾錯誤地記錄和

用作--socks 沒有附加的數量。)


--socks5 <主機[:端口]>

使用指定的SOCKS5代理——但在本地解析主機名。如未指定端口號,則假定是

1080端口。

此選項會覆蓋任何先前使用的-x/--proxy 選項,因爲它們是相互排斥的。

假如此選項已被使用過多次,則使用最後一次的設置。(此選項曾錯誤地記錄和

用作--socks 沒有附加的數量。)


--socks5-gssapi-service <服務名>

socks 服務器的默認服務名是rcmd/server-fqdn。此選項允許您改變它。

範例: --socks5 proxy-name --socks5-gssapi-service sockd would use

sockd/proxy-name --socks5 proxy-name --socks5-gssapi-service sockd/real-name

would use sockd/real-name for cases where the proxy-name does not match the

princpal name。(在7.19.4版加入) 。


--socks5-gssapi-nec

作爲gssapi negotiation 的一部分,協商保護模式。RFC1961的第4.3/4.4小節中提

到此協議應是受保護的(protected) , 但NEC 參照實現中則不這麼做。

--socks5-gssapi-nec 選項允許協商保護模式的未受保護的交換。(在7.19.4 版加入)


--stderr <文件>

將輸出到標準錯誤(stderr)的信息寫入指定文件。如果文件名指定爲純文本的'-',

則寫入到標準輸出(stdout)。此選項在您使用decent redirecting capabilities 的shell

時是無用的。

假如此選項已被使用過多次,則使用最後一次的設置。


--tcp-nodelay

打開TCP_NODELAY 選項。詳細瞭解此選項,見curl_easy_setopt(3)手冊頁。(在

7.11.2 版加入)


-t/--telnet-option <OPT=val>

爲telnet 協議傳遞選項。支持的選項有:

TTYPE=<term>設置終端類型。

XDISPLOC=<X display>設置X 顯示位置。

NEW_ENV=<var,val>設置一個環境變量。


-T/--upload-file <文件>

傳輸指定的本地文件到遠程的URL。如果URL 中不指定文件部分,則cURL 將

使用本地文件名。請注意,您必須在最後一個目錄後附加一個/,以說明確實沒

有提供文件名,否則cURL 會把最後一級目錄名當做文件名稱。這是傳輸操作失

敗最可能的原因。如果是在HTTP(S)中,則將使用PUT 命令。

如果<文件>爲"-"(單破折號),則使用標準輸入(stdin)來代替給定的文件。

您可在命令行上爲每個URL 指定一個-T 選項。每一個-T + URL 指定上傳什麼,

上傳到哪裏。cURL 還支持- T 參數的“通配符”,也就是說,您能用過在使用URL

格式中支持的通配符類型來上傳多個文件到一個URL,例如:

curl -T "{file1,file2}" http://www.uploadtothissite.com

甚至

curl -T "img[1-1000].png" ftp://ftp.picturemania.com/upload/


--trace <文件>

將所有傳入和傳出的數據,包括描述性信息的完整跟蹤轉儲到給定的輸出文件

中。使用"-"作爲文件名則將輸出發送到標準輸出(stdout)。

此選項會覆蓋上一個-v/--verbose 或--trace-ascii 選項的設置。

假如此選項已被使用過多次,則使用最後一次的設置。


--trace-ascii <文件>

將所有傳入和傳出的數據,包括描述性信息的完整跟蹤轉儲到給定的輸出文件

中。使用"-"作爲文件名則將輸出發送到標準輸出(stdout)。

與--trace 非常相似,但沒有輸出十六進制部分,而只在轉儲中顯示了ASCII 部分。

這種體積更小的轉儲文件使未經訓練的人士更易閱讀。

此選項會覆蓋上一個-v/--verbose 或--trace 選項的設置。

假如此選項已被使用過多次,則使用最後一次的設置。


--trace-time

在cURL 顯示的每一條trace 或verbose 行的開始處添加一個時間標記。(在7.14.0

版加入)


-u/--user <用戶名:密碼>

爲服務器身份驗證指定用戶名和密碼。覆蓋-n/--netrc 和--netrc-optional 選項。

如果你只給定用戶名(不輸冒號),cURL 會提示輸入密碼。

如果您使用了一個開啓SSPI 的cURL 執行文件並做NTLM 身份驗證,您可強制

cURL 從您當前環境下獲取用戶名與密碼,方法是在此選項後加一個冒號:

"-u :" 。

假如此選項已被使用過多次,則使用最後一次的設置。


-U/--proxy-user <用戶名:密碼>

爲代理服務器身份驗證指定用戶名和密碼。

如果您使用了一個開啓SSPI 的cURL 執行文件並做NTLM 身份驗證,您可強制

cURL 從您當前環境下獲取用戶名與密碼,方法是在此選項後加一個冒號:

"-u :" 。

假如此選項已被使用過多次,則使用最後一次的設置。

--url <URL>

指定要獲取的URL 地址。此選項主要是方便您在配置文件中指定URL 時使用。

此選項可使用任意多次。使用-o/--output 或-O/--remote-name 選項來控制此URL

寫往何處。


-v/--verbose

時獲取過程顯示更多的信息。對調試工作很有用。以'>'開頭的行是指cURL 發出

的“頭數據(header data)”,以'<'開頭的行是指cURL 收到的“頭數據(header data)”。

這些在一般情況下是不可見的。以'*' 開頭的行是指cURL 提供的額外信息。

請注意,如果您只想輸出HTTP header,那麼-i/--include 可能是您需要的選項。

如果你覺得此辦法還不能給您足夠的細節,可以考慮使用--trace 或--trace-ascii

來代替。

此選項會覆蓋之前使用的--trace-ascii--trace-ascii 或--trace 選項。


-V/--version

顯示關於cURL 的信息以及它使用的libcurl 版本。

第一行包含cURL 的完整版本號、可執行文件鏈接的libcurl 和其他第三方庫。

第二行(以"Protocols:"開始)顯示所有libcurl 報告支持的協議。

第三行(以"Features:"開始)顯示libcurl 報告提供的具體特性。提供的功能包括:

IPv6

您可使用IPv6。

krb4

支持FTP 的Krb4。

SSL

支持HTTPS 和FTPS。

libz

支持通過HTTP 自動解壓被壓縮的文件。

NTLM

支持NTLM 身份驗證。

GSS-Negotiate

支持FTP 的Negotiate 身份驗證和krb5。

Debug

cURL 使用除錯選項的libcurl 編譯。允許更多的錯誤跟蹤和內存調試信息,cURL

開發專用!

AsynchDNS

使cURL 使用異步名稱解析。

SPNEGO

支持SPNEGO 協商身份驗證。

Largefile

cURL 支持大於2GB 的文件傳輸。

IDN

cURL 支持IDN 國際域名。

SSPI

支持SSPI。如果您使用NTLM 並設置了一個空用戶名,cURL 將使用您當前的

用戶名和密碼做身份驗證。


-w/--write-out <格式>

定義當成功傳輸完成後顯示在標準輸出(stdout)的信息。該信息的格式可能是混

合了純文本與任意數目變量的字符串。該字符串可被指定爲"string",其中

"@filename"表示輸出filename 文件中的數據,"@-"表示輸出用戶寫入標準輸入

(stdin)的數據。

在輸出格式中呈現的變量會被cURL 用其認爲合適的值或文本取代,分述如下。

所有變量都以%{變量名}這樣的格式定義,用%%來輸出正常的%。用\n 表示換

行、\r 表示回車、\t 表示一個製表符寬度(tab)

注意: %符號在Win32的環境下是一個特殊的符號,使用此選項時,所有出現%

的地方必須以%%代替。

常用變量名有:

url_effective 最後獲取的URL。此信息當您告知cURL 來跟隨location: headers 時

是最有用的。

http_code 上一次HTTP(S) 或FTP(S) 操作返回的響應碼。在7.18.2 版加入的

response_code 顯示同樣的信息。

http_connect 在最後一次對cURL 的CONNECT 請求的響應(從代理)中發現的數

值代碼。(在7.12.4版加入)

time_total 全部操作耗費的時間,單位爲秒。精確到毫秒。

time_namelookup 從開始到域名解析完成耗費的時間,單位爲秒。

time_connectTCP 連接遠程主機(或代理服務器)所耗時間,單位爲秒。

time_appconnectSSL/SSH/等與遠程主機連接/握手完成花費的時間,單位爲秒。(在

7.19.0 版加入)

time_pretransfer 從開始到文件將要傳輸前花費的時間,單位爲秒。包括指定的協

議所有預傳輸命令和negotiations。

time_redirect 所有重定向步驟的時間,包域名解析、連接、預傳輸和最後事務開

始前的傳輸,單位爲秒。time_redirect 顯示多重重定向的完整執行時間。(在7.12.3

版加入)

time_starttransfer 從開始到第一個字節將被傳輸前耗費的時間,單位爲秒。這包

括time_pretransfer 和服務器需要的運算結果的時間。

size_download 下載的總字節數。

size_upload 上傳的總字節數。

size_header 下載的header 的總字節數。

size_request 發送的HTTP 請求的總字節數。

speed_downloadcurl 成功下載的平均下載速度。

speed_uploadcurl 成功上傳的平均上傳速度。

content_type 如果有,顯示請求文檔的Content-Type

num_connects 最近一次傳輸中的連接數目。(在7.12.3版加入)

num_redirects 跟隨請求的重定向數目。(在7.12.3版加入)

redirect_url 當未使用-L 選項發起跟隨重定向的HTTP 請求時,此變量將顯示重定

向到的實際URL。(在7.18.2版加入)

ftp_entry_path 初始路徑libcURL 結束時,在登錄到遠程FTP 服務器。(在7.15.4

版加入)

ssl_verify_result 請求的SSL peer 證書校驗結果。0表示校驗成功。(在7.19.0 版加

入)

假如此選項已被使用過多次,則使用最後一次的設置。


-x/--proxy <代理主機[:端口]>

使用指定的HTTP 代理。如未指定端口號,則假定是1080端口。

此選項會覆蓋目前環境變量中的代理設置。如果有環境變量設置了代理,可以設

置代理爲""來覆蓋此環境變量中的代理設置。

請注意,所有通過HTTP 代理的操作都會透明的轉化爲HTTP 協議。這意味着某

些特定協議的操作將會無效。這是沒問題的,如果使用-p/--proxytunnel 選項設定

通過隧道代理。

從7.14.1版開始,代理主機可被指定與代理環境變量,包括協議前綴(http://)和嵌

入的用戶名與密碼完全一樣的方式。

假如此選項已被使用過多次,則使用最後一次的設置。


-X/--request <命令>

(HTTP)在與HTTP 服務器連接時使用一個自定義的請求方法。指定的請求將被

用來代替使用的其他方法(默認是GET 方法)。詳細資料和解釋請閱讀HTTP 1.1

規範。

(FTP)在從FTP 服務器獲取文件列表時,使用一個自定義的FTP 命令代替LIST

命令。

假如此選項已被使用過多次,則使用最後一次的設置。


-y/--speed-time <時間>

如果在<時間>設定的範圍內,下載速度慢於指定的字節每秒的速度則中止下載。

如果使用此選項,除非同時用-Y 選項設置,否則默認的傳輸速度爲1(字節/秒)。

此選項控制傳輸,使其不會影響緩慢的連接等。如果您關心的是這個,請嘗試

--connect-timeout 選項。

假如此選項已被使用過多次,則使用最後一次的設置。


-Y/--speed-limit <速度>

如果下載速度在speed-time 設置的秒數裏慢於此選項指定的速度(字節/秒),則下

載中止。speed-time 使用-y 選項設置,默認爲30(秒)。

假如此選項已被使用過多次,則使用最後一次的設置。


-z/--time-cond <日期表達式>

(HTTP/FTP)請求最後修改時間遲於或早於給定日期的文件。日期表達式可以是

所有類型的日期字符串。如果指定的日期表達式與已知的任意表達式都不相符,

則會嘗試從給定的文件名中來獲取。日期表達式詳情見curl_getdate(3)手冊頁。

使用破折號(-)開始的日期表達式則請求此日期之前的文檔,默認是獲取比指定日

期/時間更新的文檔。

假如此選項已被使用過多次,則使用最後一次的設置。


--max-redirs <數量>

設定允許的重定向的最大數量。如果使用-L/--location 選項,則此選項可以用來

使cURL 避免“超越邊界的”重定向。默認情況下,限制設置爲50個重定向。將此

選項設置爲-1則是無限。

假如此選項已被使用過多次,則使用最後一次的設置。


-0/--http1.0

( HTTP )強制cURL 使用HTTP 1.0而不是其默認的HTTP 1.1來發出請求。

-1/--tlsv1

( SSL )強制cURL 使用TLS 第1版協議與遠程的TLS 服務器進行協商。

-2/--sslv2

( SSL )強制cURL 使用SSL 第2版協議與遠程的SSL 服務器進行協商。

-3/--sslv3

( SSL )強制cURL 使用SSL 第3版協議與遠程的SSL 服務器進行協商。

-4/--ipv4

如果libcurl 是能夠解析多IP 地址的版本(如果它是IPv6兼容的),此選項告知

libcurl 只解析指向IPv4的地址。

-6/--ipv6

如果libcurl 是能夠解析多IP 地址的版本(如果它是IPv6兼容的),此選項告知

libcurl 只解析指向IPv6的地址。

-#/--progress-bar

使cURL 用一個進度條代替默認的統計數據來顯示進度信息。

文件

~/.curlrc

默認的配置文件,詳情見-K/--config。

環境

環境變量可以使用小寫或大寫。小寫版本的優先。http_proxy 是一個例外,因

爲它僅適用於小寫。

http_proxy [協議://]<主機>[:端口]

爲HTTP 設置代理服務器。

HTTPS_PROXY [協議://]<主機>[:端口]

爲HTTPS 設置代理服務器。

FTP_PROXY [協議://]<主機>[:端口]

爲FTP 設置代理服務器。

ALL_PROXY [協議://]<主機>[:端口]

爲無指定協議的代理設定代理服務器。

NO_PROXY <逗號分隔的主機列表>

不使用任何代理的主機列表。如果只設置爲星號' * ',它匹配所有主機。

退出碼

這裏有許多可能會出現在惡劣條件下的不同錯誤代碼和相應信息。在本文寫作之

時,退出代碼有:

1

未支持的協議。此版cURL 不支持這一協議。

2

初始化失敗。

3

URL 格式錯誤。語法不正確。

5

無法解析代理。無法解析給定代理主機。

6

無法解析主機。無法解析給定的遠程主機。

7

無法連接到主機。

8

FTP 非正常的服務器應答。cURL 無法解析服務器發送的數據。

9

FTP 訪問被拒絕。服務器拒絕登入或無法獲取您想要的特定資源或目錄。最有可

能的是您試圖進入一個在此服務器上不存在的目錄。

11

FTP 非正常的PASS 回覆。cURL 無法解析發送到PASS 請求的應答。

13

FTP 非正常的的PASV 應答,cURL 無法解析發送到PASV 請求的應答。

14

FTP 非正常的227格式。cURL 無法解析服務器發送的227行。

15

FTP 無法連接到主機。無法解析在227行中獲取的主機IP。

17

FTP 無法設定爲二進制傳輸。無法改變傳輸方式到二進制。

18

部分文件。只有部分文件被傳輸。

19

FTP 不能下載/訪問給定的文件, RETR (或類似)命令失敗。

21

FTP quote 錯誤。quote 命令從服務器返回錯誤。

22

HTTP 找不到網頁。找不到所請求的URL 或返回另一個HTTP 400或以上錯誤。

此返回代碼只出現在使用了-f/--fail 選項以後。

23

寫入錯誤。cURL 無法向本地文件系統或類似目的寫入數據。

25

FTP 無法STOR 文件。服務器拒絕了用於FTP 上傳的STOR 操作。

26

讀錯誤。各類讀取問題。

27

內存不足。內存分配請求失敗。

28

操作超時。到達指定的超時期限條件。

30

FTP PORT 失敗。PORT 命令失敗。並非所有的FTP 服務器支持PORT 命令,請

嘗試使用被動(PASV)傳輸代替!

31

FTP 無法使用REST 命令。REST 命令失敗。此命令用來恢復的FTP 傳輸。

33

HTTP range 錯誤。range "命令"不起作用。

34

HTTP POST 錯誤。內部POST 請求產生錯誤。

35

SSL 連接錯誤。SSL 握手失敗。

36

FTP 續傳損壞。不能繼續早些時候被中止的下載。

37

文件無法讀取。無法打開文件。權限問題?

38

LDAP 無法綁定。LDAP 綁定(bind)操作失敗。

39

LDAP 搜索失敗。

41

功能無法找到。無法找到必要的LDAP 功能。

42

由回調終止。應用程序告知cURL 終止運作。

43

內部錯誤。由一個不正確參數調用了功能。

45

接口錯誤。指定的外發接口無法使用。

47

過多的重定向。cURL 達到了跟隨重定向設定的最大限額跟

48

指定了未知TELNET 選項。

49

不合式的telnet 選項。

51

peer 的SSL 證書或SSH 的MD5指紋沒有確定。

52

服務器無任何應答,該情況在此處被認爲是一個錯誤。

53

找不到SSL 加密引擎。

54

無法將SSL 加密引擎設置爲默認。

55

發送網絡數據失敗。

56

在接收網絡數據時失敗。

58

本地證書有問題。

59

無法使用指定的SSL 密碼。

60

peer 證書無法被已知的CA 證書驗證。

61

無法辨識的傳輸編碼。

62

無效的LDAP URL。

63

超過最大文件尺寸。

64

要求的FTP 的SSL 水平失敗。

65

發送此數據需要的回捲(rewind)失敗。

66

初始化SSL 引擎失敗。

67

用戶名、密碼或類似的信息未被接受,cURL 登錄失敗。

68

在TFTP 服務器上找不到文件。

69

TFTP 服務器權限有問題。

70

TFTP 服務器磁盤空間不足。

71

非法的TFTP 操作。

72

未知TFTP 傳輸編號(ID)。

73

文件已存在(TFTP) 。

74

無此用戶(TFTP) 。

75

字符轉換失敗。

76

需要字符轉換功能。

77

讀SSL 證書出現問題(路徑?訪問權限? ) 。

78

URL 中引用的資源不存在。

79

SSH 會話期間發生一個未知錯誤。

80

未能關閉SSL 連接。

82

無法加載CRL 文件,丟失或格式不正確(在7.19.0版中增加) 。

83

簽發檢查失敗(在7.19.0版中增加) 。

XX

更多信息錯誤代碼會在未來版本中出現在這裏。現有的條目將永不改變。

作者/貢獻者

主要作者爲丹尼爾斯騰伯格,但完整的貢獻者名單在單獨的THANKS 文件中。

萬維網

http://cURL.haxx.se

FTP

ftp://ftp.sunet.se/pub/www/utilities/cURL/

也可參見

FTP (1) wget (1)

網頁更新於09年8月7日

translated by MagicNight(magicnight#gmail.com)

blog.magicnight.cn


原文地址:http://talentlinux.blog.51cto.com/3407784/1221644

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章