转自:http://www.cnblogs.com/gbyukg/p/3326825.html

下载单个文件,默认将输出打印到标准输出中(STDOUT)中

  1. curl http://www.centos.org

通过-o/-O选项保存下载的文件到指定的文件中:
-o:将文件保存为命令行中指定的文件名的文件中
-O:使用URL中默认的文件名保存文件到本地

  1. 1 # 将文件下载到本地并命名为mygettext.html
  2. 2 curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html
  3. 3
  4. 4 # 将文件保存到本地并命名为gettext.html
  5. 5 curl -O http://www.gnu.org/software/gettext/manual/gettext.html

同样可以使用转向字符">"对输出进行转向输出

同时获取多个文件

  1. 1 curl -O URL1 -O URL2

若同时从同一站点下载多个文件时,curl会尝试重用链接(connection)。

通过-L选项进行重定向
默认情况下CURL不会发送HTTP Location headers(重定向).当一个被请求页面移动到另一个站点时,会发送一个HTTP Loaction header作为请求,然后将请求重定向到新的地址上。
例如:访问google.com时,会自动将地址重定向到google.com.hk上。

  1. 1 curl http://www.google.com
  2. 2 <HTML>
  3. 3 <HEAD>
  4. 4 <meta http-equiv="content-type" content="text/html;charset=utf-8">
  5. 5 <TITLE>302 Moved</TITLE>
  6. 6 </HEAD>
  7. 7 <BODY>
  8. 8 <H1>302 Moved</H1>
  9. 9 The document has moved
  10. 10 <A HREF="http://www.google.com.hk/url?sa=p&amp;hl=zh-CN&amp;pref=hkredirect&amp;pval=yes&amp;q=http://www.google.com.hk/&amp;ust=1379402837567135amp;usg=AFQjCNF3o7umf3jyJpNDPuF7KTibavE4aA">here</A>.
  11. 11 </BODY>
  12. 12 </HTML>

上述输出说明所请求的档案被转移到了http://www.google.com.hk。

这是可以通过使用-L选项进行强制重定向

  1. 1 # 让curl使用地址重定向,此时会查询google.com.hk站点
  2. 2 curl -L http://www.google.com

断点续传

通过使用-C选项可对大文件使用断点续传功能,如:

  1. 1 # 当文件在下载完成之前结束该进程
  2. 2 $ curl -O http://www.gnu.org/software/gettext/manual/gettext.html
  3. 3 ############## 20.1%
  4. 4
  5. 5 # 通过添加-C选项继续对该文件进行下载,已经下载过的文件不会被重新下载
  6. 6 curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html
  7. 7 ############### 21.1%

对CURL使用网络限速
通过--limit-rate选项对CURL的最大网络使用进行限制

  1. 1 # 下载速度最大不会超过1000B/second
  2. 2
  3. 3 curl --limit-rate 1000B -O http://www.gnu.org/software/gettext/manual/gettext.html

下载指定时间内修改过的文件

当下载一个文件时,可对该文件的最后修改日期进行判断,如果该文件在指定日期内修改过,就进行下载,否则不下载。
该功能可通过使用-z选项来实现:

  1. 1 # 若yy.html文件在2011/12/21之后有过更新才会进行下载
  2. 2 curl -z 21-Dec-11 http://www.example.com/yy.html

CURL授权

在访问需要授权的页面时,可通过-u选项提供用户名和密码进行授权

  1. 1 curl -u username:password URL
  2. 2
  3. 3 # 通常的做法是在命令行只输入用户名,之后会提示输入密码,这样可以保证在查看历史记录时不会将密码泄露
  4. 4 curl -u username URL

从FTP服务器下载文件

CURL同样支持FTP下载,若在url中指定的是某个文件路径而非具体的某个要下载的文件名,CURL则会列出该目录下的所有文件名而并非下载该目录下的所有文件

  1. 1 # 列出public_html下的所有文件夹和文件
  2. 2 curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/
  3. 3
  4. 4 # 下载xss.php文件
  5. 5 curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php

上传文件到FTP服务器

通过 -T 选项可将指定的本地文件上传到FTP服务器上

  1. # 将myfile.txt文件上传到服务器
  2. curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com
  3.  
  4. # 同时上传多个文件
  5. curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com
  6.  
  7. # 从标准输入获取内容保存到服务器指定的文件中
  8. curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt

获取更多信息

通过使用 -v 和 -trace获取更多的链接信息

通过字典查询单词

  1. 1 # 查询bash单词的含义
  2. 2 curl dict://dict.org/d:bash
  3. 3
  4. 4 # 列出所有可用词典
  5. 5 curl dict://dict.org/show:db
  6. 6
  7. 7 # 在foldoc词典中查询bash单词的含义
  8. 8 curl dict://dict.org/d:bash:foldoc

为CURL设置代理

-x 选项可以为CURL添加代理功能

  1. 1 # 指定代理主机和端口
  2. 2 curl -x proxysever.test.com:3128 http://google.co.in

其他网站整理

保存与使用网站cookie信息

  1. 1 # 将网站的cookies信息保存到sugarcookies文件中
  2. 2 curl -D sugarcookies http://localhost/sugarcrm/index.php
  3. 3
  4. 4 # 使用上次保存的cookie信息
  5. 5 curl -b sugarcookies http://localhost/sugarcrm/index.php

传递请求数据

默认curl使用GET方式请求数据,这种方式下直接通过URL传递数据
可以通过 --data/-d 方式指定使用POST方式传递数据

  1. 1 # GET
  2. 2 curl -u username https://api.github.com/user?access_token=XXXXXXXXXX
  3. 3
  4. 4 # POST
  5. 5 curl -u username --data "param1=value1&param2=value" https://api.github.com
  6. 6
  7. 7 # 也可以指定一个文件,将该文件中的内容当作数据传递给服务器端
  8. 8 curl --data @filename https://github.api.com/authorizations

注:默认情况下,通过POST方式传递过去的数据中若有特殊字符,首先需要将特殊字符转义在传递给服务器端,如value值中包含有空格,则需要先将空格转换成%20,如:

  1. 1 curl -d "value%201" http://hostname.com

在新版本的CURL中,提供了新的选项 --data-urlencode,通过该选项提供的参数会自动转义特殊字符。

  1. 1 curl --data-urlencode "value 1" http://hostname.com

除了使用GET和POST协议外,还可以通过 -X 选项指定其它协议,如:

  1. 1 curl -I -X DELETE https://api.github.cim

上传文件

  1. 1 curl --form "fileupload=@filename.txt" http://hostname/resource

[转]curl的详细使用的更多相关文章

  1. [ufldl]Supervised Neural Networks

    要实现的部分为:forward prop, softmax函数的cost function,每一层的gradient,以及penalty cost和gradient. forwad prop forw ...

  2. [干货]2017已来,最全面试总结——这些Android面试题你一定需要

        地址.http://blog.csdn.net/xhmj12/article/details/54730883 相关阅读: 吊炸天!74款APP完整源码! [干货精品,值得收藏]超全的一线互联 ...

  3. Git之(一)Git是什么[转]

    为什么使用Git 孔子曾经曰过的,名正则言顺 言顺则事成. 我们在学习一项新技术之前,弄清楚为什么要学它至关重要,至于为什么要学习Git,我用一段if-else语句告诉你原因: if(你相信我){ 我 ...

  4. [caffe]linux下安装caffe(无cuda)以及python接口

    昨天在mac上折腾了一天都没有安装成功,晚上在mac上装了一个ParallelDesktop虚拟机,然后装了linux,十分钟就安装好了,我也是醉了=.= 主要过程稍微记录一下: 1.安装BLAS s ...

  5. [Swift]基础

    [Swift]基础 一, 常用变量 var str = "Hello, playground" //变量 let str1="Hello xmj112288" ...

  6. [Ruby on Rails系列]4、专题:Rails应用的国际化[i18n]

    1. 什么是internationalization(i18n)? 国际化,英文简称i18n,按照维基百科的定义:国际化是指在设计软件,将软件与特定语言及地区脱钩的过程.当软件被移植到不同的语言及地区 ...

  7. [译]一个灵活的 Trello 敏捷工作流

    [译]一个灵活的 Trello 敏捷工作流 翻译自 An Agile Trello Workflow That Keeps Tasks Flexible Getting things done 可不只 ...

  8. iOS10收集IDFA,植入第三方广告[终结]--ADMob

    [PS: 前段时间,公司做ASO推广,需要在应用中收集IDFA值,跟广告平台做交互!于是有了这个需求--] 1.首先,考虑了一下情况(自己懒 -_-#),就直接在首页上写了一个Banner,循环加载广 ...

  9. PHP cURL的详细使用手册

    PHP cURL的详细使用手册 PHP cURL可以帮助我们简单有效地去抓取网页内容,帮助我们方便的实现抓取功能.本文主要介绍了PHP cURL的使用方法. AD:2013云计算架构师峰会课程资料下载 ...

随机推荐

  1. 关于栈和队列的一点点小知识-----C++自带函数

    栈和队列我们可以用C++里自带的函数使用,就不必手写了 1.栈,需要开头文件 #include<stack>  定义一个栈s:stack<int> s; 具体操作: s.emp ...

  2. PAT A1106 Lowest Price in Supply Chain (25 分)——树的bfs遍历

    A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyone invo ...

  3. Python2.7-内置类型

    1.布尔型:True.False 2.数值型:int.float.long.complex 3.迭代器型:有 __iter__() 方法和 next() 方法,生成器也是其中一种 4.序列型(sequ ...

  4. ESP32 电容式触摸按键设计

    手指和电容器接触时,相当于增加了电容,电容增加量与总电容的商就是电容的变化幅值,如果这个幅值超过门限,就认为触摸按键被激发了:

  5. 【Codeforces 464D】World of Darkraft - 2

    Codeforces 464 D 首先我们知道这K个装备是互不干扰的,就是说如果一个装备升级了或者卖掉了,不会对其它装备的挣到的钱产生任何影响.所以我们就考虑单独处理某一个装备挣到的钱. 那么就设\( ...

  6. Python 远程桌面协议RDPY简介

    转载请注明:@小五义http://www.cnblogs.com/xiaowuyiQQ群:64770604 RDPY 是基于 Twisted Python 实现的微软 RDP 远程桌面协议. RDPY ...

  7. 修改windows7本地策略--不能挂载磁盘和复制 -- 黏贴板-驱动器映射

    1.gpedit.msc -- > 计算机配置-- > 管理模板 -- > windows 组件 -- > 远程桌面服务 -- > 远程桌面服务主机 -- > 设备 ...

  8. SkylineGlobe 如何二次开发实现天际线分析功能

    天际线效果: 示例代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <h ...

  9. WebService与CXF

    一:Webservice 1:WebService是干什么的?有什么用? 一言以蔽之:WebService是一种跨编程语言和跨操作系统平台的远程调用技术. 所谓跨编程语言和跨操作平台,就是说服务端程序 ...

  10. HNOI2016做题笔记

    HNOI2016 最小公倍数 (分块.并查集) 看到这种不能用数据结构(实际上是可以用K-D Tree的)维护的题目就应该想到分块然后使用并查集维护连通性和一个连通块中的\(maxa , maxb\) ...