linux命令学习之:curl
curl命令是一個利用URL規(guī)則在命令行下工作的開源文件傳輸工具。它支持文件的上傳和下載,所以是綜合傳輸工具,但按傳統(tǒng),習(xí)慣稱curl為下載工具。作為一款強力工具,curl支持包括HTTP、HTTPS、ftp等眾多協(xié)議,還支持POST、cookies、認證、從指定偏移處下載部分文件、用戶代理字符串、限速、文件大小、進度條等特征。它被廣泛應(yīng)用在Unix、多種Linux發(fā)行版中,并且有DOS和Win32、Win64下的移植版本。
如果系統(tǒng)沒有curl可以使用yum install curl安裝,也可以下載安裝。
語法
curl(選項)(參數(shù))
選項
常用實例
1、文件下載
下載單個文件,默認將輸出打印到標準輸出中(STDOUT)中。curl是將下載文件輸出到stdout,將進度信息輸出到stderr,不顯示進度信息使用--silent選項。
通過-o/-O選項保存下載的文件到指定的文件中:
-o:將文件保存為命令行中指定的文件名的文件中;
-O:使用URL中默認的文件名保存文件到本地;
--progress:顯示進度條;
# 將文件下載到本地并命名為mygettext.html curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html # 將文件保存到本地并命名為gettext.html curl -O http://www.gnu.org/software/gettext/manual/gettext.html同樣可以使用轉(zhuǎn)向字符">"對輸出進行轉(zhuǎn)向輸出。
同時獲取多個文件
curl -O URL1 -O URL2若同時從同一站點下載多個文件時,curl會嘗試重用鏈接(connection)。
通過-L選項進行重定向。
默認情況下CURL不會發(fā)送HTTP Location headers(重定向),當(dāng)一個被請求頁面移動到另一個站點時,會發(fā)送一個HTTP Loaction header作為請求,然后將請求重定向到新的地址上。
例如:訪問google.com時,會自動將地址重定向到google.com.hk上。
上述輸出說明所請求的檔案被轉(zhuǎn)移到了http://www.google.com.hk。
這是可以通過使用-L選項進行強制重定向
# 讓curl使用地址重定向,此時會查詢google.com.hk站點 curl -L http://www.google.com2、斷點續(xù)傳
通過使用-C選項可對大文件使用斷點續(xù)傳功能
curl URL/File -C
偏移量 #偏移量是以字節(jié)為單位的整數(shù),如果讓curl自動推斷出正確的續(xù)傳位置使用-C -
# 當(dāng)文件在下載完成之前結(jié)束該進程 $ curl -O http://www.gnu.org/software/gettext/manual/gettext.html ############## 20.1% # 通過添加-C選項繼續(xù)對該文件進行下載,已經(jīng)下載過的文件不會被重新下載 curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html ############### 21.1%3、對CURL使用網(wǎng)絡(luò)限速
通過--limit-rate選項對CURL的最大網(wǎng)絡(luò)使用進行限制
使用--max-filesize指定可下載的最大文件大小,?如果文件大小超出限制,命令則返回一個非0退出碼,如果命令正常則返回0:
curl URL --max-filesize bytes4、下載指定時間內(nèi)修改過的文件
當(dāng)下載一個文件時,可對該文件的最后修改日期進行判斷,如果該文件在指定日期內(nèi)修改過,就進行下載,否則不下載。
該功能可通過使用-z選項來實現(xiàn):
5、CURL授權(quán)
在訪問需要授權(quán)的頁面時,可通過-u選項提供用戶名和密碼進行授權(quán)。
curl -u username:password URL # 通常的做法是在命令行只輸入用戶名,之后會提示輸入密碼,這樣可以保證在查看歷史記錄時不會將密碼泄露 curl -u username URL6、從FTP服務(wù)器下載文件
CURL同樣支持FTP下載,若在url中指定的是某個文件路徑而非具體的某個要下載的文件名,CURL則會列出該目錄下的所有文件名而并非下載該目錄下的所有文件。
# 列出public_html下的所有文件夾和文件 curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/ # 下載xss.php文件 curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php7、上傳文件到FTP服務(wù)器
通過 -T 選項可將指定的本地文件上傳到FTP服務(wù)器上。
# 將myfile.txt文件上傳到服務(wù)器 curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com# 同時上傳多個文件 curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com# 從標準輸入獲取內(nèi)容保存到服務(wù)器指定的文件中 curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt8、獲取更多信息
通過使用 -v 和 -trace獲取更多的鏈接信息。
9、通過字典查詢單詞
# 查詢bash單詞的含義 curl dict://dict.org/d:bash # 列出所有可用詞典 curl dict://dict.org/show:db # 在foldoc詞典中查詢bash單詞的含義 curl dict://dict.org/d:bash:foldoc10、為CURL設(shè)置代理
-x 選項可以為CURL添加代理功能:
# 指定代理主機和端口 curl -x proxysever.test.com:3128 http://google.co.in11、保存與使用網(wǎng)站cookie信息
# 將網(wǎng)站的cookies信息保存到sugarcookies文件中 curl -D sugarcookies http://localhost/sugarcrm/index.php # 使用上次保存的cookie信息 curl -b sugarcookies http://localhost/sugarcrm/index.php12、傳遞請求數(shù)據(jù)
默認curl使用GET方式請求數(shù)據(jù),這種方式下直接通過URL傳遞數(shù)據(jù),可以通過 --data/-d 方式指定使用POST方式傳遞數(shù)據(jù)。
# GET curl -u username https://api.github.com/user?access_token=XXXXXXXXXX# POST curl -u username --data "param1=value1¶m2=value" https://api.github.com# 也可以指定一個文件,將該文件中的內(nèi)容當(dāng)作數(shù)據(jù)傳遞給服務(wù)器端 curl --data @filename https://github.api.com/authorizations注:默認情況下,通過POST方式傳遞過去的數(shù)據(jù)中若有特殊字符,首先需要將特殊字符轉(zhuǎn)義在傳遞給服務(wù)器端,如value值中包含有空格,則需要先將空格轉(zhuǎn)換成%20,如:
curl -d "value%201" http://hostname.com在新版本的CURL中,提供了新的選項 --data-urlencode,通過該選項提供的參數(shù)會自動轉(zhuǎn)義特殊字符。
curl --data-urlencode "value 1" http://hostname.com除了使用GET和POST協(xié)議外,還可以通過 -X 選項指定其它協(xié)議,如:
curl -I -X DELETE https://api.github.cim13、上傳文件
curl --form "fileupload=@filename.txt" http://hostname/resource curl -F "key=value" -F "filename=@file.tar.gz" http://localhost/upload如果使用了-F參數(shù),curl會以multipart/form-data的方式發(fā)送POST請求。-F以key=value的形式指定要上傳的參數(shù),如果是文件,則需要使用key=@file的形式。
如果使用-d命令,curl會以application/x-www-url-encoded格式上傳參數(shù)。
curl -d "action=del" -d "id=12" http://localhost/test如果要以json格式上傳參數(shù),需要使用-H在命令中指定。
curl -H "Content-Type: application/json" -X POST -d '{"username":"xyz","password":"xyz"}' http://localhost/api/log14、只打印響應(yīng)頭部信息
通過-I或者-head可以只打印出HTTP頭部信息:
[root@localhost text]# curl -I http://man.linuxde.net HTTP/1.1 200 OK Server: nginx/1.2.5 date: Mon, 10 Dec 2012 09:24:34 GMT Content-Type: text/html;charset=UTF-8Connection: keep-alive
Vary: Accept-Encoding
X-Pingback: http://man.linuxde.net/xmlrpc.php
15、用curl設(shè)置用戶代理字符串
有些網(wǎng)站訪問會提示只能使用IE瀏覽器來訪問,這是因為這些網(wǎng)站設(shè)置了檢查用戶代理,可以使用curl把用戶代理設(shè)置為IE,這樣就可以訪問了。
使用--user-agent或者-A選項:
curl URL --user-agent "Mozilla/5.0" curl URL -A "Mozilla/5.0"其他HTTP頭部信息也可以使用curl來發(fā)送,使用-H"頭部信息" 傳遞多個頭部信息,例如:?
curl -H "Host:man.linuxde.net" -H "accept-language:zh-cn" URL16、使用curl設(shè)置參照頁字符串
參照頁是位于HTTP頭部中的一個字符串,用來表示用戶是從哪個頁面到達當(dāng)前頁面的,如果用戶點擊網(wǎng)頁A中的某個連接,那么用戶就會跳轉(zhuǎn)到B網(wǎng)頁,網(wǎng)頁B頭部的參照頁字符串就包含網(wǎng)頁A的URL。
使用--referer選項指定參照頁字符串:
curl --referer http://www.google.com http://man.linuxde.net轉(zhuǎn)載于:https://www.cnblogs.com/jing99/p/7880285.html
總結(jié)
以上是生活随笔為你收集整理的linux命令学习之:curl的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Jmeter自学】badboy使用(三
- 下一篇: linux增加 路由使两个不同的网段可以