curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。

过-o/-O选项保存下载的文件到指定的文件中:
-o:将文件保存为命令行中指定的文件名的文件中
-O:使用URL中默认的文件名保存文件到本地
# 将文件下载到本地 curl -o mygettext.html http://www.ete.com/123.html
# 将文件保存到本地 curl -O http://www.ete.com/123.htm
# 同时获取多个文件 curl -O URL1 -O URL2
# 让curl使用地址重定向,此时会查询google.com.hk站点 curl -L http://www.google.com
# 通过添加-C选项继续对该文件进行下载,已经下载过的文件不会被重新下载 curl -C - -O url
# 在访问需要授权的页面时,可通过-u选项提供用户名和密码进行授权 curl -u username:password URL
# 列出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.php
# 将myfile.txt文件上传到服务器 curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com
# 同时上传多个文件 curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com
# 从标准输入获取内容保存到服务器指定的文件中 curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt

传递请求数据

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

  # GET  curl -u username https://api.github.com/user?access_token=XXXXXXXXXX
  # POST curl -u username -X POST --data "param1=value1&param2=value" https://api.github.com
  # json curl -l -H "Content-type: application/json" -X POST -d '{"phone":"13521389587","password":"test"}' http://domain/apis/users.json
  # 也可以指定一个文件,将该文件中的内容当作数据传递给服务器端 curl --data @filename https://github.api.com/authorizations
  # 通过POST方式传递过去的数据中若有特殊字符,需要将特殊字符转义在传递给服务器端,如value值中包含有空格,则需要先将空格转换成%20,如:
  # curl -d "value%201" http://hostname.com

在新版本的CURL中,提供了新的选项 --data-urlencode,通过该选项提供的参数会自动转义特殊字符。 curl --data-urlencode "value 1" http://hostname.com

除了使用GET和POST协议外,还可以通过 -X 选项指定其它协议,如: curl -I -X DELETE https://api.github.cim

上传文件  curl --form "fileupload=@filename.txt" http://hostname/resource

最新文章

  1. Java 8 指南
  2. ES6 - Note1:块级作用域与常量
  3. .Net 中的反射(查看基本类型信息) - Part.2
  4. MySQL5:性能优化
  5. Underscore.js 初探
  6. PaintCode调研
  7. bzoj1027 [JSOI2007]合金
  8. mysq优化参数详解:innodb_buffer_pool_size,innodb_file_per_table
  9. c#+ArcEngine中的IGroupLayer的用法
  10. 解决Boost.Regex对中文支持不好的问题
  11. 运行jar包
  12. 用JS来实现于截取中英文混合字符串方法(转载)
  13. python的array初识
  14. Tigase 发送消息的流程源码分析
  15. 我对领域驱动设计(DDD)的学习成果
  16. GYM 101173 F.Free Figurines(贪心||并查集)
  17. promise、async和await之执行顺序
  18. centos 7 端口
  19. 【附6】hystrix metrics and monitor
  20. Codeforces 677C. Vanya and Label 位操作

热门文章

  1. Java 课程设计 "Give it up"小游戏(团队)
  2. 201521123101 《Java程序设计》第13周学习总结
  3. Hyperledger Fabric 1.0 从零开始(七)——启动Fabric多节点集群
  4. Linux帮助手册(man)
  5. find命令基础讲解
  6. Shiro第二篇【介绍Shiro、认证流程、自定义realm、自定义realm支持md5】
  7. Activiti-02-activiti api
  8. HTML基础入门
  9. vim下处理文档中的\r\n\t字符
  10. 利用GPU实现无尽草地的实时渲染