1. -a/--append 上传文件时,附加到目标文件
  2. -A/--user-agent <string> 设置用户代理发送给服务器
  3. -anyauth 可以使用“任何”身份验证方法
  4. -b/--cookie <name=string/file> cookie字符串或文件读取位置
  5. - basic 使用HTTP基本验证
  6. -B/--use-ascii 使用ASCII /文本传输
  7. -c/--cookie-jar <file> 操作结束后把cookie写入到这个文件中
  8. -C/--continue-at <offset> 断点续转
  9. -d/--data <data> HTTP POST方式传送数据
  10.   --data-ascii <data> 以ascii的方式post数据
  11.   --data-binary <data> 以二进制的方式post数据
  12.   --negotiate 使用HTTP身份验证
  13.   --digest 使用数字身份验证
  14.   --disable-eprt 禁止使用EPRT或LPRT
  15.   --disable-epsv 禁止使用EPSV
  16. -D/--dump-header <file> 把header信息写入到该文件中
  17.   --egd-file <file> 为随机数据(SSL)设置EGD socket路径
  18.   --tcp-nodelay 使用TCP_NODELAY选项
  19. -e/--referer 来源网址
  20. -E/--cert <cert[:passwd]> 客户端证书文件和密码 (SSL)
  21.   --cert-type <type> 证书文件类型 (DER/PEM/ENG) (SSL)
  22.   --key <key> 私钥文件名 (SSL)
  23.   --key-type <type> 私钥文件类型 (DER/PEM/ENG) (SSL)
  24.   --pass <pass> 私钥密码 (SSL)
  25.   --engine <eng> 加密引擎使用 (SSL). "--engine list" for list
  26.   --cacert <file> CA证书 (SSL)
  27.   --capath <directory> CA目录 (made using c_rehash) to verify peer against (SSL)
  28.   --ciphers <list> SSL密码
  29.   --compressed 要求返回是压缩的形势 (using deflate or gzip)
  30.   --connect-timeout <seconds> 设置最大请求时间
  31.   --create-dirs 建立本地目录的目录层次结构
  32.   --crlf 上传是把LF转变成CRLF
  33. -f/--fail 连接失败时不显示http错误
  34.   --ftp-create-dirs 如果远程目录不存在,创建远程目录
  35.   --ftp-method [multicwd/nocwd/singlecwd] 控制CWD的使用
  36.   --ftp-pasv 使用 PASV/EPSV 代替端口
  37.   --ftp-skip-pasv-ip 使用PASV的时候,忽略该IP地址
  38.   --ftp-ssl 尝试用 SSL/TLS 来进行ftp数据传输
  39.   --ftp-ssl-reqd 要求用 SSL/TLS 来进行ftp数据传输
  40. -F/--form <name=content> 模拟http表单提交数据
  41.   --form-string <name=string> 模拟http表单提交数据
  42. -g/--globoff 禁用网址序列和范围使用{}和[]
  43. -G/--get 以get的方式来发送数据
  44. -h/--help 帮助
  45. -H/--header <line>自定义头信息传递给服务器
  46.   --ignore-content-length 忽略的HTTP头信息的长度
  47. -i/--include 输出时包括protocol头信息
  48. -I/--head 只显示请求头信息
  49. -j/--junk-session-cookies 读取文件进忽略session cookie
  50.   --interface <interface> 使用指定网络接口/地址
  51.   --krb4 <level> 使用指定安全级别的krb4
  52. -k/--insecure 允许不使用证书到SSL站点
  53. -K/--config 指定的配置文件读取
  54. -l/--list-only 列出ftp目录下的文件名称
  55.   --limit-rate <rate> 设置传输速度
  56.   --local-port<NUM> 强制使用本地端口号
  57. -m/--max-time <seconds> 设置最大传输时间
  58.   --max-redirs <num> 设置最大读取的目录数
  59.   --max-filesize <bytes> 设置最大下载的文件总量
  60. -M/--manual 显示全手动
  61. -n/--netrc 从netrc文件中读取用户名和密码
  62.   --netrc-optional 使用 .netrc 或者 URL来覆盖-n
  63.   --ntlm 使用 HTTP NTLM 身份验证
  64. -N/--no-buffer 禁用缓冲输出
  65. -o/--output 把输出写到该文件中
  66. -O/--remote-name 把输出写到该文件中,保留远程文件的文件名
  67. -p/--proxytunnel 使用HTTP代理
  68.   --proxy-anyauth 选择任一代理身份验证方法
  69.   --proxy-basic 在代理上使用基本身份验证
  70.   --proxy-digest 在代理上使用数字身份验证
  71.   --proxy-ntlm 在代理上使用ntlm身份验证
  72. -P/--ftp-port <address> 使用端口地址,而不是使用PASV
  73. -q 作为第一个参数,关闭 .curlrc
  74. -Q/--quote <cmd>文件传输前,发送命令到服务器
  75. -r/--range <range>检索来自HTTP/1.1或FTP服务器字节范围
  76.   --range-file 读取(SSL)的随机文件
  77. -R/--remote-time 在本地生成文件时,保留远程文件时间
  78.   --retry <num> 传输出现问题时,重试的次数
  79.   --retry-delay <seconds> 传输出现问题时,设置重试间隔时间
  80.   --retry-max-time <seconds> 传输出现问题时,设置最大重试时间
  81. -s/--silent静音模式。不输出任何东西
  82. -S/--show-error 显示错误
  83.   --socks4 <host[:port]> 用socks4代理给定主机和端口
  84.   --socks5 <host[:port]> 用socks5代理给定主机和端口
  85.   --stderr <file>
  86. -t/--telnet-option <OPT=val> Telnet选项设置
  87.   --trace <file> 对指定文件进行debug
  88.   --trace-ascii <file> Like --跟踪但没有hex输出
  89.   --trace-time 跟踪/详细输出时,添加时间戳
  90. -T/--upload-file <file> 上传文件
  91.   --url <URL> Spet URL to work with
  92. -u/--user <user[:password]>设置服务器的用户和密码
  93. -U/--proxy-user <user[:password]>设置代理用户名和密码
  94. -v/--verbose
  95. -V/--version 显示版本信息
  96. -w/--write-out [format]什么输出完成后
  97. -x/--proxy <host[:port]>在给定的端口上使用HTTP代理
  98. -X/--request <command>指定什么命令
  99. -y/--speed-time 放弃限速所要的时间。默认为30
  100. -Y/--speed-limit 停止传输速度的限制,速度时间

curl的命令行工具功能非常强大,这些数据交互的功能基本上都是通过URL方式进行的,我们先来看看curl对多个URL的灵活操作,这些规则使我们的批处理需求应用起来非常方便。
   
    1、用{}表示多个URL
    如 http://site.{one,two,three}.com,只要在{}中写上不同的部分,就可以表示3个URL了。
   
    2、用[]表示多个URL
    如 ftp://ftp.numericals.com/file[1-100].txtftp://ftp.numericals.com/file[001-100].txtftp://ftp.letters.com/file[a-z].txt,[]中表示按数字或字母的顺序排列。
    还能表示不连续的排列,如 http://www.numericals.com/file[1-100:10].txthttp://www.letters.com/file[a-z:2].txt,":"后面的数字表示等差排列的阶跃数。
   
    3、结合起来使用
    如 http://any.org/archive[1996-1999]/vol[1-4]/part{a,b,c}.html

curl命令行工具的基本语句为:curl [options] [URL...],即 curl [选项] [下载地址]。因此,如果你想下载百度的首页,最简单的方法启动cmd,进入curl安装目录,输入命令:curl http://www.baidu.com,回车,你的输出窗口将立即出现百度首页的html数据。
    对于所有的布尔型option,基本上--option表示支持这个选项,--no-option表示禁用这个选项。下面总结几个比较有用的options。
   
    1、-o/--output <file>
    这个基本上要算最常用的选项了,用于将下载的数据保存到某个文件中。如 curl -o baidu.htmlhttp://www.baidu.com则将百度首页保存到baidu.html文件中了。下载过程中标准输出还会显示下载的统计信息,比如进度、下载字节数、下载速度等。如果指定输出为"-",则下载数据会输出到标准输出。
    如果输出的文件是一个多级目录的话,则要配合--create-dirs选项,--create-dirs将自动创建设置的输出目录。
    如果希望保存到本地的文件名和服务器上的相同,就可以直接用-O选项(大写O),而省去指定本地文件名。
    如果下载多个数据文件,可以使用上面提到的多URL规则。下载文件名也可以批量自定义,就是使用"#"。可以将"#"加到文件名当中,这样实际文件名中的#将被多个URL中的当前字符串代替,如 curlhttp://{site,host}.host[1-5].com -o "#1_#2",#1将被"site"或"host"代替,#2将被1-5之间的数字代替,也就是被当前被处理的URL中的字符串代替。
    另外下载数据的时候,可以加个"-#"选项,用一个进度条来代替文本表示进度。
   
    2、-c/--cookie-jar <file name> 和 -b/--cookie <name=data>
    这是两个操作cookie的选项,很多服务器是需要cookie信息的。用前一个选项可以指定一个文件,将其他文件中的cookie或者从服务器得到的cookie写到文件中;后一个选项则用来向服务器发送cookie信息,可以用"name=data"的形式,也可以直接跟一个保存cookie的文件名。
   
    3、-x/--proxy <proxyhost[:port]>
    该选项为http指定代理及端口,如果不指定端口,默认为1080。如 curl -x 201.36.208.19:3128http://curl.haxx.se/
   
    4、-u/--user <user:password> 和 -U/--proxy-user <user:password>
    登录某些页面或ftp需要先进行认证,输入用户名和密码。curl的这个选项可以直接处理这类操作,用指定的账号和密码进行登录认证。
    后面的选项指定代理的用户名和密码,这样便可以直接用这个代理访问网页了,如  curl -U user:password -x 201.36.208.19:3128 http://curl.haxx.se/
   
    5、-A/--user-agent <agent string>
    该选项可以指定客户端类型,服务器通过该选项判断用户应用的平台及浏览器信息。如 curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" http://www.clientinfo.com
表示告诉服务器,客户端是运行在Windows 2000系统上的IE6.0。

6、-d/--data <data>
    该选项用来以POST方式向http服务器发送特定数据,最常用的就是提交表单。如 curl -d "user=username&password=111" http://www.login.com,表示用账号username和密码111向站点发送登录申请。其中多个数据段可以用"&"进行连接一起发送;如果数据前面加上符号"@",则数据来源为后面指定的文件,如 curl -d password=@D:\pw.txt http://www.login.com

7、-C/--continue-at <offset>
    改选项提供断点续传功能,与-o选项配合使用。如 curl -c -Ohttp://vfile.home.news.cn/music/public/vd05/200905/31/a8/MUfs052009053117155750a8be70.mp3。如果指定offset,则从offset的位置开始续传。如果未指定offset,或者直接用"-C -",则curl会自己分析该从什么位置开始续传。

8、-r/--range <range>
    该选项指定下载字节的范围,常应用于分块下载文件。range的表示方式有多种,如100-500,则指定从100开始的400个字节数据;-500表示最后的500个字节;5000-表示从第5000个字节开始的所有字节;另外还可以同时指定多个字节块,中间用","分开。如
    curl -r 0-1024000 -o new_divide_1.mp3http://vfile.home.news.cn/music/public/vd05/200905/31/a8/MUfs052009053117155750a8be70.mp3 &
    curl -r 1024001-2048000 -o new_divide_2.mp3http://vfile.home.news.cn/music/public/vd05/200905/31/a8/MUfs052009053117155750a8be70.mp3 &
    curl -r 2048001- -o new_divide_3.mp3http://vfile.home.news.cn/music/public/vd05/200905/31/a8/MUfs052009053117155750a8be70.mp3
    这样就会将目标mp3文件分块下载为3个文件,然后可以用dos的copy命令:copy new_divide_1.mp3/b + new_divide_2.mp3/b + new_divide_3.mp3/b new_divide.mp3即可将3个分块文件合并为一个完整的mp3文件。
   
    9、-w/--write-out <format>
    该选项格式化输出一些用户操作的数据信息,用到的格式化输出符除了"\n","\r","\t"这些常见转义符外,还包括"@"和"%"。其中"@filename"表示输出filename文件中的数据,"@-"表示输出用户写入标准输入的数据;"%"标识符后面跟上定义的关键字,则可以输出对应的curl数据,常用的关键字有:
    http_code —— 上次操作返回的响应码;
    time_total —— 上次操作耗时,单位为秒;
    time_connect —— TCP连接远程主机的耗时,单位为秒;
    time_pretransfer —— 文件真正开始传输之前交互耗时,单位为秒,可能主要包括一些命令处理和协议分析的耗时;
    time_starttransfer —— 文件的第一个字节开始传输之前的耗时,单位为秒,包括time_pretransfer和服务器计算结果的时间;
    size_download —— 下载的总字节数;
    size_upload —— 上传的总字节数;
    size_request —— 发送http请求的总字节数;
    speed_download —— curl成功下载的平均下载速度;
    speed_upload —— curl成功上传的平均上传速度;
    举例:curl -o page.html -s -w %{time_connect}:%{time_starttransfer}:%{time_total}http://curl.haxx.se/,其中-s表示安静模式,即略去所有状态信息。
   
    10、--connect-timeout <seconds> 和 -m/--max-time <seconds>
    前者表示允许的连接的最长耗时,单位为秒;后者表示允许的整个操作的最长耗时,单位为秒,这个选项对于控制一个批处理操作的时长非常有用。
   
    11、--limit-rate <speed> 、 -Y/--speed-limit <speed> 和 -y/--speed-time <time>
    --limit-rate <speed>指定最大的数据传输率,单位为bytes/s,也可以用'k'或'K'表示kb/s,'m'或'M'表示mb/s,'g'或'G'表示gb/s,所给的speed为平均传输率,短时间峰值可能会超过此值;
-Y/--speed-limit <speed>指定最小传输率,单位为bytes/s,如果小于speed值,则传输中止,如此时-y选项没有被设置,默认time为30;-y/--speed-time <time>指定-Y选项的有效时间段,如果-Y选项没有被设置,默认为1。

12、--max-filesize <bytes>
    该选项指定所要下载的文件的最大长度,如果超过bytes值,则下载并不开始,curl返回退出码63。
   
    13、--retry <num> 、 --retry-delay <seconds> 和 --retry-max-time <seconds>
    当传输过程中出现错误,如超时、FTP 5xx返回码或者HTTP 5xx返回码,curl会进行按照设置进行重试,这几个选项都与重试有关。--retry <num>设置重试次数,--retry-delay <seconds>设置两次重试的间隔时间,--retry-max-time <seconds>设置两次重试间隔的最长时间。默认情况下,curl不进行重试;如果重试,第一次间隔1秒,之后每次都间隔上一次的2倍时间,直到间隔时间达到10分钟,之后的重试都将采用10分钟间隔。如果这3个选项的值被重新设置,则执行设置值。
   
    14、-T/--upload-file <file>
    该选项是上传命令,如向http服务器上传一个文件:curl -T D:\new_divide.mp3http://www.uploadserver.com/path/;向一个ftp服务器上传文件:curl -T D:\new_divide.mp3 -u user:password ftp://upload_site:port/path/

curl定义了一组"EXIT CODES",用来标识在出现错误时的相关信息,目前范围从1-83,具体信息可以查阅curl库自带的文档。这些退出码对于我们分析错误及原因有很大帮助。
   
   
    以上简单介绍了一下利用curl命令行工具进行一些简单的http和ftp应用,大家可以试着多用一下,会慢慢发现curl的强大功能,有很多独特的功能用起来非常简单方便。

使用curl时,有两个超时时间:一个是连接超时时间,另一个是数据传输的最大允许时间。

连接超时时间用 --connect-timeout 参数来指定,数据传输的最大允许时间用 -m 参数来指定。

例如:

curl --connect-timeout 10 -m 20 "http://XXXXXXX"

连接超时的话,出错提示形如:

curl: (28) connect() timed out!

数据传输的最大允许时间超时的话,出错提示形如:

curl: (28) Operation timed out after 2000 milliseconds with 0 bytes received

curl命令常用参数的更多相关文章

  1. free命令常用参数详解

    free命令常用参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在运维期间我们会经常去查看服务器硬件信息,比如说内存,大家可能知道看内存用“[root@yinzhengji ...

  2. CentOS6.9下ssh密钥登录配置步骤(免密码登录)和ssh-keygen 命令常用参数

    密钥登录步骤(免密码登录)ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口令(密码)认证方式是我们最常用的一种,出于安全方面的考虑,介绍密钥认证方式登录到linux/unix的方 ...

  3. Debian9.5下ssh密钥登录配置步骤(免密码登录)和ssh-keygen 命令常用参数

    密钥登录步骤(免密码登录)ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口令(密码)认证方式是我们最常用的一种,出于安全方面的考虑,介绍密钥认证方式登录到linux/unix的方 ...

  4. Linux操作系统的文件查找工具locate和find命令常用参数介绍

    Linux操作系统的文件查找工具locate和find命令常用参数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.非实时查找(数据库查找)locate工具  locate命 ...

  5. mongod 命令常用参数 mongod常用命令参数大全

    成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作.输入help可以看到基本操作命令,只是MongoDB没有创建数据库的命令,但有类似的命令 mongod.exe ...

  6. [转帖]RPM的原理及rpm命令常用参数

    RPM的原理及rpm命令常用参数 2015年09月14日 15:39:43 lose_wait 阅读数 1298 https://blog.csdn.net/u012012939/article/de ...

  7. Linux系统sed命令常用参数实战

    Linux系统sed命令常用参数实战 常用参数 -n 输出某行的文本内容,通常与p联合使用, -e 命令行模式下进行sed的动作编辑,输出编辑后的内容,源文件不会发生变化 -f 以命令中指定的scri ...

  8. windows下使用curl命令 && 常用curl命令

    什么是curl命令? curl是利用URL语法在命令行方式下工作的开源文件传输工具.它被广泛应用在Unix.多种Linux发行版中,并且有DOS和Win32.Win64下的移植版本. 如何在windo ...

  9. windows下使用curl命令&&常用curl命令

    什么是curl命令? curl是利用URL语法在命令行方式下工作的开源文件传输工具.它被广泛应用在Unix.多种Linux发行版中,并且有DOS和Win32.Win64下的移植版本. 如何在windo ...

随机推荐

  1. js中常用日期时间转换

    常用日期时间处理插件:1. timeago.js处理几分钟之前    2. day.js    3. moment.js 注意: 1. 此处的标准时间格式为  2018-03-23 13:35:47 ...

  2. HDU 1159 &amp;&amp; POJ 1458

    最长公共子序列.状态转移方程见代码. #include <iostream> #include <cstdio> #include <cstring> using ...

  3. NUMA架构

    参考: http://www.ibm.com/developerworks/cn/linux/l-numa/ http://blog.sina.com.cn/s/blog_3f5c2f8c01000b ...

  4. LaTeX排版设置图表的位置 Positioning images and tables

    Positioning images and tables LATEX is an editing tool that takes care of the format so you only hav ...

  5. 关于TagHelper的那些事情——自定义TagHelper(内嵌TagHelper)

    内嵌TagHelper 上一篇文章中提到有时候需要设计一种内嵌的TagHelper,如下: <my name="yy" age="35"> < ...

  6. SVM初学

    一.            一点基础数学知识 如今硕士都快毕业了,反而将自己的很多数学知识忘的几乎相同了.所以.如今决心再捡起来.以补齐自己的数学短板.为以后的研究做好铺垫吧.如今结合自己学习SVM. ...

  7. [88221008]调用新下单接口失败,result:162020004,resInfo

    [88221008]调用新下单接口失败,result:162020004,resInfo

  8. Java中的初始化顺序(静态成员、静态初始化块,普通成员、普通初始化块、构造函数)

    本文链接    http://blog.csdn.net/xiaodongrush/article/details/29170099 參考文章     http://my.oschina.net/le ...

  9. Maven项目结合POI导出Excl表格Demo-亲测可用

    Maven项目结合POI导出Excl表格 一.POM文件添加依赖 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> ...

  10. 【转】linux下的单线程

    传统的每个进程中只有一个线程在执行,称作单线程方法.MS-DOS是一种支持单用户进程和单线程的操作系统,UNIX支持多用户进程,但只支持每个进程一个线程,WINDOWS 2000(W2K).SOLAR ...