1curl(1)                           Curl Manual                          curl(1)
2
3
4

NAME

6       curl - transfer a URL
7

SYNOPSIS

9       curl [options] [URL...]
10

DESCRIPTION

12       curl  is  a tool to transfer data from or to a server, using one of the
13       supported protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS,  IMAP,
14       IMAPS,  LDAP,  LDAPS,  POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS,
15       TELNET and TFTP).  The command is designed to work without user  inter‐
16       action.
17
18       curl offers a busload of useful tricks like proxy support, user authen‐
19       tication, FTP upload, HTTP post, SSL connections, cookies, file  trans‐
20       fer  resume,  Metalink,  and more. As you will see below, the number of
21       features will make your head spin!
22
23       curl is powered by  libcurl  for  all  transfer-related  features.  See
24       libcurl(3) for details.
25

URL

27       The  URL  syntax is protocol-dependent. You'll find a detailed descrip‐
28       tion in RFC 3986.
29
30       You can specify multiple URLs or parts of URLs  by  writing  part  sets
31       within braces as in:
32
33        http://site.{one,two,three}.com
34
35       or you can get sequences of alphanumeric series by using [] as in:
36
37        ftp://ftp.numericals.com/file[1-100].txt
38        ftp://ftp.numericals.com/file[001-100].txt    (with leading zeros)
39        ftp://ftp.letters.com/file[a-z].txt
40
41       Nested  sequences  are not supported, but you can use several ones next
42       to each other:
43
44        http://any.org/archive[1996-1999]/vol[1-4]/part{a,b,c}.html
45
46       You can specify any amount of URLs on the command line.  They  will  be
47       fetched in a sequential manner in the specified order.
48
49       You  can  specify a step counter for the ranges to get every Nth number
50       or letter:
51
52        http://www.numericals.com/file[1-100:10].txt
53        http://www.letters.com/file[a-z:2].txt
54
55       If you specify URL without protocol:// prefix,  curl  will  attempt  to
56       guess  what  protocol  you might want. It will then default to HTTP but
57       try other protocols based on often-used host name prefixes.  For  exam‐
58       ple,  for  host names starting with "ftp." curl will assume you want to
59       speak FTP.
60
61       curl will do its best to use what you pass to it as a URL.  It  is  not
62       trying  to  validate it as a syntactically correct URL by any means but
63       is instead very liberal with what it accepts.
64
65       curl will attempt to re-use connections for multiple file transfers, so
66       that  getting many files from the same server will not do multiple con‐
67       nects / handshakes. This improves speed. Of course this is only done on
68       files  specified  on  a  single command line and cannot be used between
69       separate curl invokes.
70

PROGRESS METER

72       curl normally displays a progress meter during  operations,  indicating
73       the  amount  of  transferred  data,  transfer speeds and estimated time
74       left, etc.
75
76       curl displays this data to the terminal by default, so  if  you  invoke
77       curl  to do an operation and it is about to write data to the terminal,
78       it disables the progress meter as otherwise it would mess up the output
79       mixing progress meter and response data.
80
81       If you want a progress meter for HTTP POST or PUT requests, you need to
82       redirect the response output to a file, using shell  redirect  (>),  -o
83       [file] or similar.
84
85       It  is not the same case for FTP upload as that operation does not spit
86       out any response data to the terminal.
87
88       If you prefer a progress "bar" instead of the regular meter, -# is your
89       friend.
90

OPTIONS

92       In general, all boolean options are enabled with --option and yet again
93       disabled with --no-option. That is, you use the exact same option  name
94       but prefix it with "no-". However, in this list we mostly only list and
95       show the --option version of them. (This concept with --no options  was
96       added  in  7.19.0.  Previously  most  options  were  toggled  on/off on
97       repeated use of the same command line option.)
98
99       -#, --progress-bar
100              Make curl display progress as a simple progress bar  instead  of
101              the standard, more informational, meter.
102
103       -0, --http1.0
104              (HTTP)  Forces curl to issue its requests using HTTP 1.0 instead
105              of using its internally preferred: HTTP 1.1.
106
107       -1, --tlsv1
108              (SSL) Forces curl to use TLS version 1.x when negotiating with a
109              remote  TLS  server.   You can use options --tlsv1.0, --tlsv1.1,
110              and --tlsv1.2 to control the TLS version more precisely (if  the
111              SSL backend in use supports such a level of control).
112
113       -2, --sslv2
114              (SSL)  Forces  curl to use SSL version 2 when negotiating with a
115              remote SSL server.
116
117       -3, --sslv3
118              (SSL) Forces curl to use SSL version 3 when negotiating  with  a
119              remote SSL server.
120
121       -4, --ipv4
122              If  curl  is capable of resolving an address to multiple IP ver‐
123              sions (which it is if it is  IPv6-capable),  this  option  tells
124              curl to resolve names to IPv4 addresses only.
125
126       -6, --ipv6
127              If  curl  is capable of resolving an address to multiple IP ver‐
128              sions (which it is if it is  IPv6-capable),  this  option  tells
129              curl to resolve names to IPv6 addresses only.
130
131       -a, --append
132              (FTP/SFTP) When used in an upload, this will tell curl to append
133              to the target file  instead  of  overwriting  it.  If  the  file
134              doesn't  exist,  it  will  be  created.   Note that this flag is
135              ignored by some SSH servers (including OpenSSH).
136
137       -A, --user-agent <agent string>
138              (HTTP) Specify the User-Agent string to send to the HTTP server.
139              Some   badly   done  CGIs  fail  if  this  field  isn't  set  to
140              "Mozilla/4.0". To encode blanks  in  the  string,  surround  the
141              string  with  single  quote marks. This can also be set with the
142              -H, --header option of course.
143
144              If this option is used several times, the last one will be used.
145
146       --anyauth
147              (HTTP) Tells curl to figure out authentication method by itself,
148              and  use  the most secure one the remote site claims to support.
149              This is done by first doing a request and checking the response-
150              headers,  thus  possibly  inducing  an extra network round-trip.
151              This is  used  instead  of  setting  a  specific  authentication
152              method,  which  you  can  do with --basic, --digest, --ntlm, and
153              --negotiate.
154
155              Note that using --anyauth is not recommended if you  do  uploads
156              from  stdin, since it may require data to be sent twice and then
157              the client must be able to rewind. If the need should arise when
158              uploading from stdin, the upload operation will fail.
159
160       -b, --cookie <name=data>
161              (HTTP)  Pass the data to the HTTP server as a cookie. It is sup‐
162              posedly the data previously received from the server in a  "Set-
163              Cookie:"  line.  The data should be in the format "NAME1=VALUE1;
164              NAME2=VALUE2".
165
166              If no '=' symbol is used in the line, it is treated as  a  file‐
167              name  to  use to read previously stored cookie lines from, which
168              should be used in this session if they match. Using this  method
169              also  activates  the "cookie parser" which will make curl record
170              incoming cookies too, which may be handy if you're using this in
171              combination  with  the -L, --location option. The file format of
172              the file to read cookies from should be plain  HTTP  headers  or
173              the Netscape/Mozilla cookie file format.
174
175              NOTE  that  the file specified with -b, --cookie is only used as
176              input. No cookies will be stored in the file. To store  cookies,
177              use  the -c, --cookie-jar option or you could even save the HTTP
178              headers to a file using -D, --dump-header!
179
180              If this option is used several times, the last one will be used.
181
182       -B, --use-ascii
183              (FTP/LDAP) Enable ASCII transfer. For  FTP,  this  can  also  be
184              enforced  by  using an URL that ends with ";type=A". This option
185              causes data sent to stdout to be in text mode for win32 systems.
186
187       --basic
188              (HTTP) Tells curl to use HTTP Basic authentication. This is  the
189              default  and this option is usually pointless, unless you use it
190              to override a  previously  set  option  that  sets  a  different
191              authentication  method  (such  as --ntlm, --digest, or --negoti‐
192              ate).
193
194       -c, --cookie-jar <file name>
195              (HTTP) Specify to which file you want curl to write all  cookies
196              after  a completed operation. Curl writes all cookies previously
197              read from a specified file as well as all cookies received  from
198              remote server(s). If no cookies are known, no file will be writ‐
199              ten. The file will be written using  the  Netscape  cookie  file
200              format.  If  you  set  the  file name to a single dash, "-", the
201              cookies will be written to stdout.
202
203              This command line option will activate the  cookie  engine  that
204              makes curl record and use cookies. Another way to activate it is
205              to use the -b, --cookie option.
206
207              If the cookie jar can't be created or written to, the whole curl
208              operation  won't  fail or even report an error clearly. Using -v
209              will get a warning displayed, but that is the only visible feed‐
210              back you get about this possibly lethal situation.
211
212              If  this  option  is used several times, the last specified file
213              name will be used.
214
215       -C, --continue-at <offset>
216              Continue/Resume a previous file transfer at  the  given  offset.
217              The  given  offset  is  the  exact  number of bytes that will be
218              skipped, counting from the beginning of the source  file  before
219              it is transferred to the destination.  If used with uploads, the
220              FTP server command SIZE will not be used by curl.
221
222              Use "-C -" to tell curl to automatically find out  where/how  to
223              resume  the  transfer. It then uses the given output/input files
224              to figure that out.
225
226              If this option is used several times, the last one will be used.
227
228       --ciphers <list of ciphers>
229              (SSL) Specifies which ciphers to use in the connection. The list
230              of  ciphers  must  specify  valid ciphers. Read up on SSL cipher
231              list          details           on           this           URL:
232              http://www.openssl.org/docs/apps/ciphers.html
233
234              NSS  ciphers  are  done differently than OpenSSL and GnuTLS. The
235              full list of NSS ciphers is in the NSSCipherSuite entry at  this
236              URL:                                          http://git.fedora
237              hosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives
238
239              If this option is used several times, the last one will be used.
240
241       --compressed
242              (HTTP) Request a compressed response using one of the algorithms
243              curl  supports,  and  save  the  uncompressed document.  If this
244              option is used and the server  sends  an  unsupported  encoding,
245              curl will report an error.
246
247       --connect-timeout <seconds>
248              Maximum  time  in  seconds  that you allow the connection to the
249              server to take.  This only limits  the  connection  phase,  once
250              curl  has  connected this option is of no more use. See also the
251              -m, --max-time option.
252
253              If this option is used several times, the last one will be used.
254
255       --create-dirs
256              When used in conjunction with the -o option,  curl  will  create
257              the  necessary  local directory hierarchy as needed. This option
258              creates the dirs mentioned with the -o option, nothing else.  If
259              the  -o file name uses no dir or if the dirs it mentions already
260              exist, no dir will be created.
261
262              To create remote directories when using FTP or SFTP, try  --ftp-
263              create-dirs.
264
265       --crlf (FTP) Convert LF to CRLF in upload. Useful for MVS (OS/390).
266
267       --crlfile <file>
268              (HTTPS/FTPS)  Provide a file using PEM format with a Certificate
269              Revocation List that may specify peer certificates that  are  to
270              be considered revoked.
271
272              If this option is used several times, the last one will be used.
273
274              (Added in 7.19.7)
275
276       -d, --data <data>
277              (HTTP)  Sends  the  specified data in a POST request to the HTTP
278              server, in the same way that a browser  does  when  a  user  has
279              filled  in an HTML form and presses the submit button. This will
280              cause curl to pass the data to the server using the content-type
281              application/x-www-form-urlencoded.  Compare to -F, --form.
282
283              -d,  --data  is  the  same  as --data-ascii. To post data purely
284              binary, you should instead use the --data-binary option. To URL-
285              encode the value of a form field you may use --data-urlencode.
286
287              If  any of these options is used more than once on the same com‐
288              mand line, the data pieces specified  will  be  merged  together
289              with  a  separating  &-symbol.  Thus,  using  '-d name=daniel -d
290              skill=lousy'  would  generate  a  post  chunk  that  looks  like
291              'name=daniel&skill=lousy'.
292
293              If  you  start  the data with the letter @, the rest should be a
294              file name to read the data from, or - if you want curl  to  read
295              the  data  from stdin.  The contents of the file must already be
296              URL-encoded. Multiple files can also be specified. Posting  data
297              from  a file named 'foobar' would thus be done with --data @foo‐
298              bar.
299
300       -D, --dump-header <file>
301              Write the protocol headers to the specified file.
302
303              This option is handy to use when you want to store  the  headers
304              that  an  HTTP site sends to you. Cookies from the headers could
305              then be read in a  second  curl  invocation  by  using  the  -b,
306              --cookie option! The -c, --cookie-jar option is however a better
307              way to store cookies.
308
309              When used in FTP, the FTP server response lines  are  considered
310              being "headers" and thus are saved there.
311
312              If this option is used several times, the last one will be used.
313
314
315       --data-ascii <data>
316              See -d, --data.
317
318       --data-binary <data>
319              (HTTP)  This  posts data exactly as specified with no extra pro‐
320              cessing whatsoever.
321
322              If you start the data with the letter @, the rest  should  be  a
323              filename.   Data  is  posted in a similar manner as --data-ascii
324              does, except that newlines are  preserved  and  conversions  are
325              never done.
326
327              If  this  option  is  used several times, the ones following the
328              first will append data as described in -d, --data.
329
330       --data-urlencode <data>
331              (HTTP) This posts data, similar to the other --data options with
332              the exception that this performs URL-encoding. (Added in 7.18.0)
333
334              To  be  CGI-compliant,  the <data> part should begin with a name
335              followed by a separator and a content specification. The  <data>
336              part can be passed to curl using one of the following syntaxes:
337
338              content
339                     This  will make curl URL-encode the content and pass that
340                     on. Just be careful so that the content  doesn't  contain
341                     any  =  or  @  symbols, as that will then make the syntax
342                     match one of the other cases below!
343
344              =content
345                     This will make curl URL-encode the content and pass  that
346                     on. The preceding = symbol is not included in the data.
347
348              name=content
349                     This  will make curl URL-encode the content part and pass
350                     that on. Note that the name part is expected to  be  URL-
351                     encoded already.
352
353              @filename
354                     This  will  make  curl  load  data  from  the  given file
355                     (including any newlines), URL-encode that data  and  pass
356                     it on in the POST.
357
358              name@filename
359                     This  will  make  curl  load  data  from  the  given file
360                     (including any newlines), URL-encode that data  and  pass
361                     it  on  in  the  POST.  The  name part gets an equal sign
362                     appended, resulting in name=urlencoded-file-content. Note
363                     that the name is expected to be URL-encoded already.
364
365       --delegation LEVEL
366              Set LEVEL to tell the server what it is allowed to delegate when
367              it comes to user credentials. Used with GSS/kerberos.
368
369              none   Don't allow any delegation.
370
371              policy Delegates if and only if the OK-AS-DELEGATE flag  is  set
372                     in  the  Kerberos  service  ticket,  which is a matter of
373                     realm policy.
374
375              always Unconditionally allow the server to delegate.
376
377       --digest
378              (HTTP) Enables HTTP Digest authentication. This is an  authenti‐
379              cation  scheme  that  prevents the password from being sent over
380              the wire in clear text. Use this in combination with the  normal
381              -u,  --user  option  to  set  user  name  and password. See also
382              --ntlm, --negotiate and --anyauth for related options.
383
384              If this option is used several times,  only  the  first  one  is
385              used.
386
387       --disable-eprt
388              (FTP) Tell curl to disable the use of the EPRT and LPRT commands
389              when doing active FTP transfers. Curl will normally always first
390              attempt  to use EPRT, then LPRT before using PORT, but with this
391              option, it will use PORT right away. EPRT and  LPRT  are  exten‐
392              sions  to  the  original  FTP  protocol, and may not work on all
393              servers, but they enable more functionality in a better way than
394              the traditional PORT command.
395
396              --eprt can be used to explicitly enable EPRT again and --no-eprt
397              is an alias for --disable-eprt.
398
399              If the server is an IPv6 host, this option will have  no  effect
400              as EPRT is necessary then.
401
402              Disabling  EPRT only changes the active behavior. If you want to
403              switch to passive mode you need to not  use  -P,  --ftp-port  or
404              force it with --ftp-pasv.
405
406       --disable-epsv
407              (FTP)  Tell  curl  to  disable  the use of the EPSV command when
408              doing passive FTP transfers. Curl  will  normally  always  first
409              attempt  to  use EPSV before PASV, but with this option, it will
410              not try using EPSV.
411
412              --epsv can be used to explicitly enable EPSV again and --no-epsv
413              is an alias for --disable-epsv.
414
415              If  the  server is an IPv6 host, this option will have no effect
416              as EPSV is necessary then.
417
418              Disabling EPSV only changes the passive behavior. If you want to
419              switch to active mode you need to use -P, --ftp-port.
420
421       -e, --referer <URL>
422              (HTTP)  Sends the "Referer Page" information to the HTTP server.
423              This can also be set with the -H, --header flag of course.  When
424              used with -L, --location you can append ";auto" to the --referer
425              URL to make curl automatically set the previous URL when it fol‐
426              lows  a  Location: header. The ";auto" string can be used alone,
427              even if you don't set an initial --referer.
428
429              If this option is used several times, the last one will be used.
430
431       -E, --cert <certificate[:password]>
432              (SSL) Tells curl to use the specified  client  certificate  file
433              when getting a file with HTTPS, FTPS or another SSL-based proto‐
434              col. The certificate must be in PEM  format.   If  the  optional
435              password  isn't  specified, it will be queried for on the termi‐
436              nal. Note that this option assumes a "certificate" file that  is
437              the  private  key  and the private certificate concatenated! See
438              --cert and --key to specify them independently.
439
440              If curl is built against the NSS SSL library  then  this  option
441              can  tell curl the nickname of the certificate to use within the
442              NSS database defined by the environment variable SSL_DIR (or  by
443              default  /etc/pki/nssdb).  If  the  NSS PEM PKCS#11 module (lib‐
444              nsspem.so) is available then PEM files may  be  loaded.  If  you
445              want to use a file from the current directory, please precede it
446              with "./" prefix, in order to avoid confusion with  a  nickname.
447              If  the nickname contains ":", it needs to be preceded by "\" so
448              that it is not recognized as password delimiter.  If  the  nick‐
449              name  contains "\", it needs to be escaped as "\\" so that it is
450              not recognized as an escape character.
451
452              If this option is used several times, the last one will be used.
453
454       --engine <name>
455              Select the OpenSSL crypto engine to use for  cipher  operations.
456              Use  --engine  list  to  print  a  list  of build-time supported
457              engines. Note that not all (or  none)  of  the  engines  may  be
458              available at run-time.
459
460       --environment
461              (RISC  OS ONLY) Sets a range of environment variables, using the
462              names the -w option supports, to allow easier extraction of use‐
463              ful information after having run curl.
464
465       --egd-file <file>
466              (SSL)  Specify  the  path  name  to the Entropy Gathering Daemon
467              socket. The socket is used to seed the  random  engine  for  SSL
468              connections. See also the --random-file option.
469
470       --cert-type <type>
471              (SSL)  Tells curl what certificate type the provided certificate
472              is in. PEM, DER and ENG are recognized types.  If not specified,
473              PEM is assumed.
474
475              If this option is used several times, the last one will be used.
476
477       --cacert <CA certificate>
478              (SSL) Tells curl to use the specified certificate file to verify
479              the peer. The file may contain  multiple  CA  certificates.  The
480              certificate(s)  must be in PEM format. Normally curl is built to
481              use a default file for this, so this option is typically used to
482              alter that default file.
483
484              curl  recognizes the environment variable named 'CURL_CA_BUNDLE'
485              if it is set, and uses the given path as a path  to  a  CA  cert
486              bundle. This option overrides that variable.
487
488              The  windows  version  of  curl will automatically look for a CA
489              certs file named ´curl-ca-bundle.crt´, either in the same direc‐
490              tory as curl.exe, or in the Current Working Directory, or in any
491              folder along your PATH.
492
493              If curl is built against  the  NSS  SSL  library,  the  NSS  PEM
494              PKCS#11  module  (libnsspem.so)  needs  to be available for this
495              option to work properly.
496
497              If this option is used several times, the last one will be used.
498
499       --capath <CA certificate directory>
500              (SSL) Tells curl to use the specified certificate  directory  to
501              verify  the  peer.  Multiple paths can be provided by separating
502              them with ":" (e.g.  "path1:path2:path3"). The certificates must
503              be  in  PEM  format,  and  if curl is built against OpenSSL, the
504              directory must have been processed using  the  c_rehash  utility
505              supplied  with OpenSSL. Using --capath can allow OpenSSL-powered
506              curl to make SSL-connections much more  efficiently  than  using
507              --cacert if the --cacert file contains many CA certificates.
508
509              If this option is set, the default capath value will be ignored,
510              and if it is used several times, the last one will be used.
511
512       -f, --fail
513              (HTTP) Fail silently (no output at all) on server  errors.  This
514              is  mostly done to better enable scripts etc to better deal with
515              failed attempts. In normal cases when an HTTP  server  fails  to
516              deliver  a  document,  it  returns  an  HTML document stating so
517              (which often also describes why and more). This flag  will  pre‐
518              vent curl from outputting that and return error 22.
519
520              This  method is not fail-safe and there are occasions where non-
521              successful response codes will  slip  through,  especially  when
522              authentication is involved (response codes 401 and 407).
523
524       -F, --form <name=content>
525              (HTTP)  This  lets curl emulate a filled-in form in which a user
526              has pressed the submit button. This causes  curl  to  POST  data
527              using  the  Content-Type  multipart/form-data  according  to RFC
528              2388. This enables uploading of binary files etc. To  force  the
529              'content'  part  to  be  a  file, prefix the file name with an @
530              sign. To just get the content part from a file, prefix the  file
531              name  with  the symbol <. The difference between @ and < is then
532              that @ makes a file get attached in the post as a  file  upload,
533              while  the  <  makes  a text field and just get the contents for
534              that text field from a file.
535
536              Example, to send your password file to the server, where  'pass‐
537              word' is the name of the form-field to which /etc/passwd will be
538              the input:
539
540              curl -F password=@/etc/passwd www.mypasswords.com
541
542              To read content from stdin instead of a file, use - as the file‐
543              name. This goes for both @ and < constructs.
544
545              You  can  also  tell  curl  what  Content-Type  to  use by using
546              'type=', in a manner similar to:
547
548              curl -F "web=@index.html;type=text/html" url.com
549
550              or
551
552              curl -F "name=daniel;type=text/foo" url.com
553
554              You can also explicitly change the name field of a  file  upload
555              part by setting filename=, like this:
556
557              curl -F "file=@localfile;filename=nameinpost" url.com
558
559              If  filename/path contains ',' or ';', it must be quoted by dou‐
560              ble-quotes like:
561
562              curl -F "file=@\"localfile\";filename=\"nameinpost\"" url.com
563
564              or
565
566              curl -F 'file=@"localfile";filename="nameinpost"' url.com
567
568              Note that if a filename/path is  quoted  by  double-quotes,  any
569              double-quote or backslash within the filename must be escaped by
570              backslash.
571
572              See further examples and details in the MANUAL.
573
574              This option can be used multiple times.
575
576       --ftp-account [data]
577              (FTP) When an FTP server asks for "account data" after user name
578              and  password has been provided, this data is sent off using the
579              ACCT command. (Added in 7.13.0)
580
581              If this option is used several times, the last one will be used.
582
583       --ftp-alternative-to-user <command>
584              (FTP) If authenticating with the USER and PASS  commands  fails,
585              send  this  command.   When  connecting  to  Tumbleweed's Secure
586              Transport server over FTPS using  a  client  certificate,  using
587              "SITE  AUTH"  will tell the server to retrieve the username from
588              the certificate. (Added in 7.15.5)
589
590       --ftp-create-dirs
591              (FTP/SFTP) When an FTP or SFTP URL/operation uses  a  path  that
592              doesn't  currently exist on the server, the standard behavior of
593              curl is to fail. Using this option, curl will instead attempt to
594              create missing directories.
595
596       --ftp-method [method]
597              (FTP)  Control what method curl should use to reach a file on an
598              FTP(S) server. The method argument should be one of the  follow‐
599              ing alternatives:
600
601              multicwd
602                     curl  does  a  single CWD operation for each path part in
603                     the given URL. For deep hierarchies this means very  many
604                     commands.  This  is  how RFC 1738 says it should be done.
605                     This is the default but the slowest behavior.
606
607              nocwd  curl does no CWD at all. curl will do  SIZE,  RETR,  STOR
608                     etc and give a full path to the server for all these com‐
609                     mands. This is the fastest behavior.
610
611              singlecwd
612                     curl does one CWD with the full target directory and then
613                     operates  on  the  file  "normally" (like in the multicwd
614                     case). This is somewhat  more  standards  compliant  than
615                     'nocwd' but without the full penalty of 'multicwd'.
616       (Added in 7.15.1)
617
618       --ftp-pasv
619              (FTP)  Use  passive mode for the data connection. Passive is the
620              internal default behavior, but using this option can be used  to
621              override a previous -P/-ftp-port option. (Added in 7.11.0)
622
623              If  this  option  is  used  several times, only the first one is
624              used. Undoing an enforced passive really isn't  doable  but  you
625              must then instead enforce the correct -P, --ftp-port again.
626
627              Passive mode means that curl will try the EPSV command first and
628              then PASV, unless --disable-epsv is used.
629
630       --ftp-skip-pasv-ip
631              (FTP) Tell curl to not use the IP address the server suggests in
632              its  response to curl's PASV command when curl connects the data
633              connection. Instead curl will re-use  the  same  IP  address  it
634              already uses for the control connection. (Added in 7.14.2)
635
636              This  option has no effect if PORT, EPRT or EPSV is used instead
637              of PASV.
638
639       --ftp-pret
640              (FTP) Tell curl to send a PRET command before PASV  (and  EPSV).
641              Certain  FTP  servers,  mainly drftpd, require this non-standard
642              command for directory listings as well as up  and  downloads  in
643              PASV mode.  (Added in 7.20.x)
644
645       --ftp-ssl-ccc
646              (FTP)  Use  CCC  (Clear  Command Channel) Shuts down the SSL/TLS
647              layer after authenticating. The rest of the control channel com‐
648              munication  will be unencrypted. This allows NAT routers to fol‐
649              low the FTP transaction. The default mode is passive. See --ftp-
650              ssl-ccc-mode for other modes.  (Added in 7.16.1)
651
652       --ftp-ssl-ccc-mode [active/passive]
653              (FTP)  Use  CCC  (Clear  Command Channel) Sets the CCC mode. The
654              passive mode will not initiate the shutdown,  but  instead  wait
655              for the server to do it, and will not reply to the shutdown from
656              the server. The active mode initiates the shutdown and waits for
657              a reply from the server.  (Added in 7.16.2)
658
659       --ftp-ssl-control
660              (FTP)  Require  SSL/TLS  for  the FTP login, clear for transfer.
661              Allows secure authentication, but non-encrypted  data  transfers
662              for  efficiency.   Fails the transfer if the server doesn't sup‐
663              port SSL/TLS.  (Added in 7.16.0) that can still be used but will
664              be removed in a future version.
665
666       --form-string <name=string>
667              (HTTP)  Similar  to  --form except that the value string for the
668              named parameter is used literally. Leading '@' and  '<'  charac‐
669              ters, and the ';type=' string in the value have no special mean‐
670              ing. Use this in preference to --form if there's any possibility
671              that  the  string  value may accidentally trigger the '@' or '<'
672              features of --form.
673
674       -g, --globoff
675              This option switches off the "URL globbing parser". When you set
676              this  option, you can specify URLs that contain the letters {}[]
677              without having them being interpreted by curl itself. Note  that
678              these  letters are not normal legal URL contents but they should
679              be encoded according to the URI standard.
680
681       -G, --get
682              When used, this option will make all  data  specified  with  -d,
683              --data  or  --data-binary  to  be  used  in  an HTTP GET request
684              instead of the POST request that otherwise would  be  used.  The
685              data will be appended to the URL with a '?' separator.
686
687              If  used  in  combination with -I, the POST data will instead be
688              appended to the URL with a HEAD request.
689
690              If this option is used several times,  only  the  first  one  is
691              used.  This is because undoing a GET doesn't make sense, but you
692              should then instead enforce the alternative method you prefer.
693
694       -H, --header <header>
695              (HTTP) Extra header to use when getting  a  web  page.  You  may
696              specify any number of extra headers. Note that if you should add
697              a custom header that has the same name as one  of  the  internal
698              ones  curl  would  use,  your externally set header will be used
699              instead of the internal one. This allows you to make even trick‐
700              ier  stuff  than  curl would normally do. You should not replace
701              internally set  headers  without  knowing  perfectly  well  what
702              you're  doing. Remove an internal header by giving a replacement
703              without content on the right  side  of  the  colon,  as  in:  -H
704              "Host:".  If  you  send the custom header with no-value then its
705              header must be terminated with a semicolon, such as  -H  "X-Cus‐
706              tom-Header;" to send "X-Custom-Header:".
707
708              curl  will  make  sure  that each header you add/replace is sent
709              with the proper end-of-line marker, you should thus not add that
710              as a part of the header content: do not add newlines or carriage
711              returns, they will only mess things up for you.
712
713              See also the -A, --user-agent and -e, --referer options.
714
715              This option can be used  multiple  times  to  add/replace/remove
716              multiple headers.
717
718       --hostpubmd5 <md5>
719              (SCP/SFTP)  Pass  a string containing 32 hexadecimal digits. The
720              string should be the 128 bit MD5 checksum of the  remote  host's
721              public key, curl will refuse the connection with the host unless
722              the md5sums match. (Added in 7.17.1)
723
724       --ignore-content-length
725              (HTTP) Ignore the Content-Length header.  This  is  particularly
726              useful  for servers running Apache 1.x, which will report incor‐
727              rect Content-Length for files larger than 2 gigabytes.
728
729       -i, --include
730              (HTTP) Include the HTTP-header in the  output.  The  HTTP-header
731              includes  things  like  server-name, date of the document, HTTP-
732              version and more...
733
734       -I, --head
735              (HTTP/FTP/FILE) Fetch the HTTP-header only! HTTP-servers feature
736              the  command  HEAD which this uses to get nothing but the header
737              of a document. When used on an FTP or FILE file,  curl  displays
738              the file size and last modification time only.
739
740       --interface <name>
741              Perform  an operation using a specified interface. You can enter
742              interface name, IP address or host name. An example  could  look
743              like:
744
745               curl --interface eth0:1 http://www.netscape.com/
746
747              If this option is used several times, the last one will be used.
748
749       -j, --junk-session-cookies
750              (HTTP) When curl is told to read cookies from a given file, this
751              option will make it discard all  "session  cookies".  This  will
752              basically  have  the same effect as if a new session is started.
753              Typical browsers always discard  session  cookies  when  they're
754              closed down.
755
756       -J, --remote-header-name
757              (HTTP) This option tells the -O, --remote-name option to use the
758              server-specified   Content-Disposition   filename   instead   of
759              extracting a filename from the URL.
760
761       -k, --insecure
762              (SSL)  This  option explicitly allows curl to perform "insecure"
763              SSL connections and transfers. All SSL connections are attempted
764              to  be  made secure by using the CA certificate bundle installed
765              by default. This makes  all  connections  considered  "insecure"
766              fail unless -k, --insecure is used.
767
768              See     this    online    resource    for    further    details:
769              http://curl.haxx.se/docs/sslcerts.html
770
771       -K, --config <config file>
772              Specify which config file to read curl arguments from. The  con‐
773              fig  file  is a text file in which command line arguments can be
774              written which then will be used as if they were written  on  the
775              actual command line. Options and their parameters must be speci‐
776              fied on the same config  file  line,  separated  by  whitespace,
777              colon,  the equals sign or any combination thereof (however, the
778              preferred separator is the equals sign). If the parameter is  to
779              contain  whitespace,  the  parameter  must  be  enclosed  within
780              quotes. Within double quotes, the following escape sequences are
781              available:  \\, \", \t, \n, \r and \v. A backslash preceding any
782              other letter is ignored. If the first column of a config line is
783              a  '#' character, the rest of the line will be treated as a com‐
784              ment. Only write one option per  physical  line  in  the  config
785              file.
786
787              Specify  the  filename  to -K, --config as '-' to make curl read
788              the file from stdin.
789
790              Note that to be able to specify a URL in the  config  file,  you
791              need  to  specify  it  using the --url option, and not by simply
792              writing the URL on its own line. So, it could  look  similar  to
793              this:
794
795              url = "http://curl.haxx.se/docs/"
796
797              Long  option  names  can  optionally be given in the config file
798              without the initial double dashes.
799
800              When curl is invoked, it always (unless -q is used) checks for a
801              default  config  file  and  uses it if found. The default config
802              file is checked for in the following places in this order:
803
804              1) curl tries to find the "home dir": It first  checks  for  the
805              CURL_HOME and then the HOME environment variables. Failing that,
806              it uses getpwuid() on UNIX-like systems (which returns the  home
807              dir  given the current user in your system). On Windows, it then
808              checks for the APPDATA variable, or as a last resort the '%USER‐
809              PROFILE%\Application Data'.
810
811              2)  On  windows, if there is no _curlrc file in the home dir, it
812              checks for one in the same dir the curl executable is placed. On
813              UNIX-like  systems,  it will simply try to load .curlrc from the
814              determined home dir.
815
816              # --- Example file ---
817              # this is a comment
818              url = "curl.haxx.se"
819              output = "curlhere.html"
820              user-agent = "superagent/1.0"
821
822              # and fetch another URL too
823              url = "curl.haxx.se/docs/manpage.html"
824              -O
825              referer = "http://nowhereatall.com/"
826              # --- End of example file ---
827
828              This option can be used multiple times to load  multiple  config
829              files.
830
831       --keepalive-time <seconds>
832              This  option  sets  the  time  a connection needs to remain idle
833              before sending keepalive probes and the time between  individual
834              keepalive probes. It is currently effective on operating systems
835              offering  the  TCP_KEEPIDLE  and  TCP_KEEPINTVL  socket  options
836              (meaning  Linux, recent AIX, HP-UX and more). This option has no
837              effect if --no-keepalive is used. (Added in 7.18.0)
838
839              If this option is used several times, the last one will be used.
840              If unspecified, the option defaults to 60 seconds.
841
842       --key <key>
843              (SSL/SSH) Private key file name. Allows you to provide your pri‐
844              vate key in this separate file. For SSH, if not specified,  curl
845              tries   the  following  candidates  in  order:  '~/.ssh/id_rsa',
846              '~/.ssh/id_dsa', './id_rsa', './id_dsa'.
847
848              If this option is used several times, the last one will be used.
849
850       --key-type <type>
851              (SSL) Private key file type. Specify which type your --key  pro‐
852              vided  private  key  is. DER, PEM, and ENG are supported. If not
853              specified, PEM is assumed.
854
855              If this option is used several times, the last one will be used.
856
857       --krb <level>
858              (FTP) Enable Kerberos authentication and use. The level must  be
859              entered and should be one of 'clear', 'safe', 'confidential', or
860              'private'. Should you use a level that  is  not  one  of  these,
861              'private' will instead be used.
862
863              This  option  requires  a library built with kerberos4 or GSSAPI
864              (GSS-Negotiate) support. This is not very common. Use -V, --ver‐
865              sion to see if your curl supports it.
866
867              If this option is used several times, the last one will be used.
868
869       -l, --list-only
870              (FTP)  When listing an FTP directory, this switch forces a name-
871              only view.  Especially useful if you want to  machine-parse  the
872              contents  of  an  FTP  directory since the normal directory view
873              doesn't use a standard look or format.
874
875              This option causes an FTP NLST command to  be  sent.   Some  FTP
876              servers  list  only files in their response to NLST; they do not
877              include subdirectories and symbolic links.
878
879
880       -L, --location
881              (HTTP/HTTPS) If the server reports that the requested  page  has
882              moved to a different location (indicated with a Location: header
883              and a 3XX response code), this option will make  curl  redo  the
884              request on the new place. If used together with -i, --include or
885              -I, --head, headers from all requested pages will be shown. When
886              authentication  is  used, curl only sends its credentials to the
887              initial host. If a redirect takes curl to a different  host,  it
888              won't  be  able to intercept the user+password. See also --loca‐
889              tion-trusted on how to change this. You can limit the amount  of
890              redirects to follow by using the --max-redirs option.
891
892              When  curl follows a redirect and the request is not a plain GET
893              (for example POST or PUT), it will do the following request with
894              a GET if the HTTP response was 301, 302, or 303. If the response
895              code was any other 3xx code, curl  will  re-send  the  following
896              request using the same unmodified method.
897
898       --libcurl <file>
899              Append  this  option  to any ordinary curl command line, and you
900              will get a libcurl-using C source code written to the file  that
901              does the equivalent of what your command-line operation does!
902
903              If  this  option is used several times, the last given file name
904              will be used. (Added in 7.16.1)
905
906       --limit-rate <speed>
907              Specify the maximum transfer rate you want  curl  to  use.  This
908              feature is useful if you have a limited pipe and you'd like your
909              transfer not to use your entire bandwidth.
910
911              The given speed is measured in bytes/second, unless a suffix  is
912              appended.   Appending  'k' or 'K' will count the number as kilo‐
913              bytes, 'm' or M' makes it megabytes, while 'g' or 'G'  makes  it
914              gigabytes. Examples: 200K, 3m and 1G.
915
916              The  given  rate  is the average speed counted during the entire
917              transfer. It means that curl might use higher transfer speeds in
918              short bursts, but over time it uses no more than the given rate.
919
920              If  you  also use the -Y, --speed-limit option, that option will
921              take precedence and might cripple the rate-limiting slightly, to
922              help keeping the speed-limit logic working.
923
924              If this option is used several times, the last one will be used.
925
926       --local-port <num>[-num]
927              Set a preferred number or range of local port numbers to use for
928              the connection(s).  Note that  port  numbers  by  nature  are  a
929              scarce resource that will be busy at times so setting this range
930              to something too narrow might cause unnecessary connection setup
931              failures. (Added in 7.15.2)
932
933       --location-trusted
934              (HTTP/HTTPS)  Like  -L,  --location,  but will allow sending the
935              name + password to all hosts that the site may redirect to. This
936              may or may not introduce a security breach if the site redirects
937              you to a site to which  you'll  send  your  authentication  info
938              (which is plaintext in the case of HTTP Basic authentication).
939
940       -m, --max-time <seconds>
941              Maximum  time  in  seconds that you allow the whole operation to
942              take.  This is useful for preventing your batch jobs from  hang‐
943              ing  for  hours  due  to slow networks or links going down.  See
944              also the --connect-timeout option.
945
946              If this option is used several times, the last one will be used.
947
948       --mail-auth <address>
949              (SMTP) Specify a single address. This will be  used  to  specify
950              the  authentication  address  (identity)  of a submitted message
951              that is being relayed to another server.
952
953              (Added in 7.25.0)
954
955       --mail-from <address>
956              (SMTP) Specify a single address that the given mail  should  get
957              sent from.
958
959              (Added in 7.20.0)
960
961       --max-filesize <bytes>
962              Specify  the  maximum  size (in bytes) of a file to download. If
963              the file requested is larger than this value, the transfer  will
964              not start and curl will return with exit code 63.
965
966              NOTE:  The  file size is not always known prior to download, and
967              for such files this option has no effect even if the file trans‐
968              fer  ends  up  being larger than this given limit. This concerns
969              both FTP and HTTP transfers.
970
971       --mail-rcpt <address>
972              (SMTP) Specify a single address that the given mail  should  get
973              sent  to. This option can be used multiple times to specify many
974              recipients.
975
976              (Added in 7.20.0)
977
978       --max-redirs <num>
979              Set maximum number of  redirection-followings  allowed.  If  -L,
980              --location is used, this option can be used to prevent curl from
981              following redirections "in absurdum". By default, the  limit  is
982              set  to 50 redirections. Set this option to -1 to make it limit‐
983              less.
984
985              If this option is used several times, the last one will be used.
986
987       --metalink
988              This option can tell curl to parse and process a  given  URI  as
989              Metalink  file  (both  version 3 and 4 (RFC 5854) are supported)
990              and make use of the mirrors listed within for failover if  there
991              are  errors (such as the file or server not being available). It
992              will also verify the hash of the file after  the  download  com‐
993              pletes.  The Metalink file itself is downloaded and processed in
994              memory and not stored in the local file system.
995
996              Example to use a remote Metalink file:
997
998              curl --metalink http://www.example.com/example.metalink
999
1000              To use a Metalink file in the local file system, use FILE proto‐
1001              col (file://):
1002
1003              curl --metalink file://example.metalink
1004
1005              Please  note  that if FILE protocol is disabled, there is no way
1006              to use a local Metalink file at the time of this  writing.  Also
1007              note  that  if  --metalink  and  --include  are  used  together,
1008              --include will be ignored. This is because including headers  in
1009              the  response  will break Metalink parser and if the headers are
1010              included in the file described in Metalink file, hash check will
1011              fail.
1012
1013              (Added in 7.27.0, if built against the libmetalink library.)
1014
1015       -n, --netrc
1016              Makes  curl  scan  the  .netrc  (_netrc  on Windows) file in the
1017              user's home directory for login name and password. This is typi‐
1018              cally  used for FTP on UNIX. If used with HTTP, curl will enable
1019              user authentication. See netrc(4) or ftp(1) for details  on  the
1020              file  format.  Curl  will not complain if that file doesn't have
1021              the right permissions (it should not be either world- or  group-
1022              readable).  The  environment variable "HOME" is used to find the
1023              home directory.
1024
1025              A quick and very simple example of how  to  setup  a  .netrc  to
1026              allow  curl to FTP to the machine host.domain.com with user name
1027              'myself' and password 'secret' should look similar to:
1028
1029              machine host.domain.com login myself password secret
1030
1031       -N, --no-buffer
1032              Disables the buffering of the output stream. In normal work sit‐
1033              uations,  curl  will  use a standard buffered output stream that
1034              will have the effect that it will output the data in chunks, not
1035              necessarily  exactly  when  the data arrives.  Using this option
1036              will disable that buffering.
1037
1038              Note that this is the negated option name  documented.  You  can
1039              thus use --buffer to enforce the buffering.
1040
1041       --netrc-file
1042              This  option  is similar to --netrc, except that you provide the
1043              path (absolute or relative) to the netrc file that  Curl  should
1044              use.   You  can  only  specify one netrc file per invocation. If
1045              several --netrc-file options are provided,  only  the  last  one
1046              will be used.  (Added in 7.21.5)
1047
1048              This  option  overrides  any use of --netrc as they are mutually
1049              exclusive.  It will also abide by --netrc-optional if specified.
1050
1051
1052       --netrc-optional
1053              Very similar to --netrc, but this option makes the .netrc  usage
1054              optional and not mandatory as the --netrc option does.
1055
1056
1057       --negotiate
1058              (HTTP)  Enables  GSS-Negotiate authentication. The GSS-Negotiate
1059              method was designed by Microsoft and is used in their web appli‐
1060              cations.  It  is  primarily  meant  as  a  support for Kerberos5
1061              authentication but may be also used along with another authenti‐
1062              cation method. For more information see IETF draft draft-brezak-
1063              spnego-http-04.txt.
1064
1065              If you want to enable Negotiate for your  proxy  authentication,
1066              then use --proxy-negotiate.
1067
1068              This  option  requires a library built with GSSAPI support. This
1069              is not very common. Use -V, --version to  see  if  your  version
1070              supports GSS-Negotiate.
1071
1072              When  using this option, you must also provide a fake -u, --user
1073              option to activate the authentication code properly.  Sending  a
1074              '-u  :'  is  enough  as  the  user name and password from the -u
1075              option aren't actually used.
1076
1077              If this option is used several times,  only  the  first  one  is
1078              used.
1079
1080       --no-keepalive
1081              Disables the use of keepalive messages on the TCP connection, as
1082              by default curl enables them.
1083
1084              Note that this is the negated option name  documented.  You  can
1085              thus use --keepalive to enforce keepalive.
1086
1087       --no-sessionid
1088              (SSL)  Disable curl's use of SSL session-ID caching.  By default
1089              all transfers are done using the cache. Note that while  nothing
1090              should  ever  get  hurt  by attempting to reuse SSL session-IDs,
1091              there seem to be broken SSL implementations in the wild that may
1092              require  you to disable this in order for you to succeed. (Added
1093              in 7.16.0)
1094
1095              Note that this is the negated option name  documented.  You  can
1096              thus use --sessionid to enforce session-ID caching.
1097
1098       --noproxy <no-proxy-list>
1099              Comma-separated  list  of hosts which do not use a proxy, if one
1100              is specified.  The only wildcard is a single * character,  which
1101              matches all hosts, and effectively disables the proxy. Each name
1102              in this list is matched as either a domain  which  contains  the
1103              hostname,  or  the hostname itself. For example, local.com would
1104              match  local.com,  local.com:80,  and  www.local.com,  but   not
1105              www.notlocal.com.  (Added in 7.19.4).
1106
1107       --ntlm (HTTP)  Enables  NTLM  authentication.  The  NTLM authentication
1108              method was designed by Microsoft and is used by IIS web servers.
1109              It  is a proprietary protocol, reverse-engineered by clever peo‐
1110              ple and implemented in curl based on their efforts. This kind of
1111              behavior  should  not be endorsed, you should encourage everyone
1112              who uses NTLM to switch to a public and  documented  authentica‐
1113              tion method instead, such as Digest.
1114
1115              If  you  want to enable NTLM for your proxy authentication, then
1116              use --proxy-ntlm.
1117
1118              This option requires a library built with SSL support.  Use  -V,
1119              --version to see if your curl supports NTLM.
1120
1121              If  this  option  is  used  several times, only the first one is
1122              used.
1123
1124       -o, --output <file>
1125              Write output to <file> instead of stdout. If you are using {} or
1126              []  to  fetch  multiple documents, you can use '#' followed by a
1127              number in the <file> specifier. That variable will  be  replaced
1128              with the current string for the URL being fetched. Like in:
1129
1130                curl http://{one,two}.site.com -o "file_#1.txt"
1131
1132              or use several variables like:
1133
1134                curl http://{site,host}.host[1-5].com -o "#1_#2"
1135
1136              You  may use this option as many times as the number of URLs you
1137              have.
1138
1139              See also the --create-dirs option to create the  local  directo‐
1140              ries  dynamically.  Specifying the output as '-' (a single dash)
1141              will force the output to be done to stdout.
1142
1143       -O, --remote-name
1144              Write output to a local file named like the remote file we  get.
1145              (Only  the file part of the remote file is used, the path is cut
1146              off.)
1147
1148              The remote file name to use for saving  is  extracted  from  the
1149              given URL, nothing else.
1150
1151              Consequentially,  the  file will be saved in the current working
1152              directory. If you want the file saved in a different  directory,
1153              make sure you change current working directory before you invoke
1154              curl with the -O, --remote-name flag!
1155
1156              You may use this option as many times as the number of URLs  you
1157              have.
1158
1159       -p, --proxytunnel
1160              When an HTTP proxy is used (-x, --proxy), this option will cause
1161              non-HTTP protocols  to  attempt  to  tunnel  through  the  proxy
1162              instead  of merely using it to do HTTP-like operations. The tun‐
1163              nel approach is made with the HTTP  proxy  CONNECT  request  and
1164              requires that the proxy allows direct connect to the remote port
1165              number curl wants to tunnel through to.
1166
1167       -P, --ftp-port <address>
1168              (FTP) Reverses the default initiator/listener  roles  when  con‐
1169              necting  with  FTP.  This  switch makes curl use active mode. In
1170              practice, curl then tells the server  to  connect  back  to  the
1171              client's specified address and port, while passive mode asks the
1172              server to setup an IP address and port for  it  to  connect  to.
1173              <address> should be one of:
1174
1175              interface
1176                     i.e  "eth0"  to  specify which interface's IP address you
1177                     want to use (Unix only)
1178
1179              IP address
1180                     i.e "192.168.10.1" to specify the exact IP address
1181
1182              host name
1183                     i.e "my.host.domain" to specify the machine
1184
1185              -      make curl pick the same IP address that is  already  used
1186                     for the control connection
1187
1188       If  this  option is used several times, the last one will be used. Dis‐
1189       able the use of PORT with --ftp-pasv. Disable the attempt  to  use  the
1190       EPRT  command  instead  of PORT by using --disable-eprt. EPRT is really
1191       PORT++.
1192
1193       Starting in 7.19.5, you can append ":[start]-[end]" to the right of the
1194       address,  to tell curl what TCP port range to use. That means you spec‐
1195       ify a port range, from a lower to a  higher  number.  A  single  number
1196       works  as well, but do note that it increases the risk of failure since
1197       the port may not be available.
1198
1199       --pass <phrase>
1200              (SSL/SSH) Passphrase for the private key
1201
1202              If this option is used several times, the last one will be used.
1203
1204       --post301
1205              (HTTP) Tells curl to respect RFC  2616/10.3.2  and  not  convert
1206              POST  requests  into GET requests when following a 301 redirect‐
1207              ion. The non-RFC behaviour is ubiquitous  in  web  browsers,  so
1208              curl  does  the  conversion  by default to maintain consistency.
1209              However, a server may require a POST to remain a POST after such
1210              a  redirection.  This  option  is meaningful only when using -L,
1211              --location (Added in 7.17.1)
1212
1213       --post302
1214              (HTTP) Tells curl to respect RFC  2616/10.3.2  and  not  convert
1215              POST  requests  into GET requests when following a 302 redirect‐
1216              ion. The non-RFC behaviour is ubiquitous  in  web  browsers,  so
1217              curl  does  the  conversion  by default to maintain consistency.
1218              However, a server may require a POST to remain a POST after such
1219              a  redirection.  This  option  is meaningful only when using -L,
1220              --location (Added in 7.19.1)
1221
1222       --post303
1223              (HTTP) Tells curl to respect RFC  2616/10.3.2  and  not  convert
1224              POST  requests  into GET requests when following a 303 redirect‐
1225              ion. The non-RFC behaviour is ubiquitous  in  web  browsers,  so
1226              curl  does  the  conversion  by default to maintain consistency.
1227              However, a server may require a POST to remain a POST after such
1228              a  redirection.  This  option  is meaningful only when using -L,
1229              --location (Added in 7.26.0)
1230
1231       --proto <protocols>
1232              Tells  curl  to  use  the  listed  protocols  for  its   initial
1233              retrieval. Protocols are evaluated left to right, are comma sep‐
1234              arated, and are each a protocol name or 'all',  optionally  pre‐
1235              fixed by zero or more modifiers. Available modifiers are:
1236
1237              +  Permit this protocol in addition to protocols already permit‐
1238                 ted (this is the default if no modifier is used).
1239
1240              -  Deny this protocol, removing it from the  list  of  protocols
1241                 already permitted.
1242
1243              =  Permit  only this protocol (ignoring the list already permit‐
1244                 ted), though subject  to  later  modification  by  subsequent
1245                 entries in the comma separated list.
1246
1247              For example:
1248
1249              --proto -ftps  uses the default protocols, but disables ftps
1250
1251              --proto -all,https,+http
1252                             only enables http and https
1253
1254              --proto =http,https
1255                             also only enables http and https
1256
1257              Unknown  protocols  produce  a  warning.  This allows scripts to
1258              safely rely on being able to disable potentially dangerous  pro‐
1259              tocols,  without  relying  upon  support for that protocol being
1260              built into curl to avoid an error.
1261
1262              This option can be used multiple times, in which case the effect
1263              is  the same as concatenating the protocols into one instance of
1264              the option.
1265
1266              (Added in 7.20.2)
1267
1268       --proto-redir <protocols>
1269              Tells curl to use the listed protocols  after  a  redirect.  See
1270              --proto for how protocols are represented.
1271
1272              (Added in 7.20.2)
1273
1274       --proxy-anyauth
1275              Tells  curl to pick a suitable authentication method when commu‐
1276              nicating with  the  given  proxy.  This  might  cause  an  extra
1277              request/response round-trip. (Added in 7.13.2)
1278
1279       --proxy-basic
1280              Tells  curl  to use HTTP Basic authentication when communicating
1281              with the given proxy. Use --basic for enabling HTTP Basic with a
1282              remote  host.  Basic  is  the default authentication method curl
1283              uses with proxies.
1284
1285       --proxy-digest
1286              Tells curl to use HTTP Digest authentication when  communicating
1287              with the given proxy. Use --digest for enabling HTTP Digest with
1288              a remote host.
1289
1290       --proxy-negotiate
1291              Tells curl to use HTTP Negotiate authentication when communicat‐
1292              ing  with  the  given  proxy.  Use --negotiate for enabling HTTP
1293              Negotiate with a remote host. (Added in 7.17.1)
1294
1295       --proxy-ntlm
1296              Tells curl to use HTTP NTLM  authentication  when  communicating
1297              with the given proxy. Use --ntlm for enabling NTLM with a remote
1298              host.
1299
1300       --proxy1.0 <proxyhost[:port]>
1301              Use the specified HTTP 1.0 proxy. If  the  port  number  is  not
1302              specified, it is assumed at port 1080.
1303
1304              The  only difference between this and the HTTP proxy option (-x,
1305              --proxy), is that attempts to use CONNECT through the proxy will
1306              specify an HTTP 1.0 protocol instead of the default HTTP 1.1.
1307
1308       --pubkey <key>
1309              (SSH)  Public  key  file name. Allows you to provide your public
1310              key in this separate file.
1311
1312              If this option is used several times, the last one will be used.
1313
1314              (As of 7.39.0, curl attempts to automatically extract the public
1315              key  from the private key file, so passing this option is gener‐
1316              ally not required. Note that this public key extraction requires
1317              libcurl  to  be linked against a copy of libssh2 1.2.8 or higher
1318              that is itself linked against OpenSSL.)
1319
1320       -q     If used as the first parameter on the command line,  the  curlrc
1321              config  file will not be read and used. See the -K, --config for
1322              details on the default config file search path.
1323
1324       -Q, --quote <command>
1325              (FTP/SFTP) Send an arbitrary command to the remote FTP  or  SFTP
1326              server.  Quote commands are sent BEFORE the transfer takes place
1327              (just after the initial PWD command in an FTP  transfer,  to  be
1328              exact). To make commands take place after a successful transfer,
1329              prefix them with a dash '-'.  To make  commands  be  sent  after
1330              curl has changed the working directory, just before the transfer
1331              command(s), prefix the command with a '+'  (this  is  only  sup‐
1332              ported  for FTP). You may specify any number of commands. If the
1333              server returns failure for one of the commands, the entire oper‐
1334              ation  will  be aborted. You must send syntactically correct FTP
1335              commands as RFC 959 defines to FTP servers, or one of  the  com‐
1336              mands  listed  below  to  SFTP servers.  This option can be used
1337              multiple times. When speaking to an FTP server, prefix the  com‐
1338              mand with an asterisk (*) to make curl continue even if the com‐
1339              mand fails as by default curl will stop at first failure.
1340
1341              SFTP is a binary protocol. Unlike for FTP, curl interprets  SFTP
1342              quote  commands  itself before sending them to the server.  File
1343              names may be quoted shell-style to embed spaces or special char‐
1344              acters.   Following is the list of all supported SFTP quote com‐
1345              mands:
1346
1347              chgrp group file
1348                     The chgrp command sets the group ID of the file named  by
1349                     the  file  operand to the group ID specified by the group
1350                     operand. The group operand is a decimal integer group ID.
1351
1352              chmod mode file
1353                     The chmod command modifies the  file  mode  bits  of  the
1354                     specified file. The mode operand is an octal integer mode
1355                     number.
1356
1357              chown user file
1358                     The chown command sets the owner of the file named by the
1359                     file  operand  to the user ID specified by the user oper‐
1360                     and. The user operand is a decimal integer user ID.
1361
1362              ln source_file target_file
1363                     The ln and symlink commands create a symbolic link at the
1364                     target_file  location  pointing  to the source_file loca‐
1365                     tion.
1366
1367              mkdir directory_name
1368                     The mkdir command creates  the  directory  named  by  the
1369                     directory_name operand.
1370
1371              pwd    The pwd command returns the absolute pathname of the cur‐
1372                     rent working directory.
1373
1374              rename source target
1375                     The rename command renames the file or directory named by
1376                     the  source  operand to the destination path named by the
1377                     target operand.
1378
1379              rm file
1380                     The rm command removes the file specified by the file op‐
1381                     erand.
1382
1383              rmdir directory
1384                     The  rmdir  command removes the directory entry specified
1385                     by the directory operand, provided it is empty.
1386
1387              symlink source_file target_file
1388                     See ln.
1389
1390       -r, --range <range>
1391              (HTTP/FTP/SFTP/FILE) Retrieve a byte range (i.e a partial  docu‐
1392              ment)  from  a  HTTP/1.1,  FTP  or  SFTP server or a local FILE.
1393              Ranges can be specified in a number of ways.
1394
1395              0-499     specifies the first 500 bytes
1396
1397              500-999   specifies the second 500 bytes
1398
1399              -500      specifies the last 500 bytes
1400
1401              9500-     specifies the bytes from offset 9500 and forward
1402
1403              0-0,-1    specifies the first and last byte only(*)(H)
1404
1405              500-700,600-799
1406                        specifies 300 bytes from offset 500(H)
1407
1408              100-199,500-599
1409                        specifies two separate 100-byte ranges(*)(H)
1410
1411       (*) = NOTE that this will cause the server to reply  with  a  multipart
1412       response!
1413
1414       Only  digit characters (0-9) are valid in the 'start' and 'stop' fields
1415       of the 'start-stop' range syntax. If a non-digit character is given  in
1416       the  range, the server's response will be unspecified, depending on the
1417       server's configuration.
1418
1419       You should also be aware that many HTTP/1.1 servers do  not  have  this
1420       feature  enabled,  so  that  when  you  attempt  to get a range, you'll
1421       instead get the whole document.
1422
1423       FTP and SFTP range downloads only support the simple 'start-stop'  syn‐
1424       tax  (optionally  with  one of the numbers omitted). FTP use depends on
1425       the extended FTP command SIZE.
1426
1427       If this option is used several times, the last one will be used.
1428
1429       -R, --remote-time
1430              When used, this will make curl attempt to figure out  the  time‐
1431              stamp  of  the  remote  file,  and if that is available make the
1432              local file get that same timestamp.
1433
1434       --random-file <file>
1435              (SSL) Specify the path name to file containing what will be con‐
1436              sidered  as  random  data.  The  data is used to seed the random
1437              engine for SSL connections.  See also the --egd-file option.
1438
1439       --raw  (HTTP) When used, it disables all internal HTTP decoding of con‐
1440              tent  or  transfer  encodings  and  instead makes them passed on
1441              unaltered, raw. (Added in 7.16.2)
1442
1443       --remote-name-all
1444              This option changes the default action for all given URLs to  be
1445              dealt with as if -O, --remote-name were used for each one. So if
1446              you want to disable that for a specific URL after --remote-name-
1447              all  has  been  used,  you  must use "-o -" or --no-remote-name.
1448              (Added in 7.19.0)
1449
1450       --resolve <host:port:address>
1451              Provide a custom address for a  specific  host  and  port  pair.
1452              Using  this,  you  can make the curl requests(s) use a specified
1453              address and prevent the otherwise normally resolved  address  to
1454              be  used.  Consider it a sort of /etc/hosts alternative provided
1455              on the command line. The port number should be the  number  used
1456              for  the  specific  protocol the host will be used for. It means
1457              you need several entries if you want to provide address for  the
1458              same host but different ports.
1459
1460              This  option  can  be  used many times to add many host names to
1461              resolve.
1462
1463              (Added in 7.21.3)
1464
1465       --retry <num>
1466              If a transient error is returned when curl tries  to  perform  a
1467              transfer,  it  will retry this number of times before giving up.
1468              Setting the number to 0 makes curl do no retries (which  is  the
1469              default).  Transient  error  means either: a timeout, an FTP 4xx
1470              response code or an HTTP 5xx response code.
1471
1472              When curl is about to retry a transfer, it will first  wait  one
1473              second  and  then for all forthcoming retries it will double the
1474              waiting time until it reaches 10 minutes which then will be  the
1475              delay  between  the rest of the retries.  By using --retry-delay
1476              you  disable  this  exponential  backoff  algorithm.  See   also
1477              --retry-max-time  to  limit  the total time allowed for retries.
1478              (Added in 7.12.3)
1479
1480              If this option is used several times, the last one will be used.
1481
1482       --retry-delay <seconds>
1483              Make curl sleep this amount of time before  each  retry  when  a
1484              transfer  has  failed  with  a  transient  error (it changes the
1485              default backoff time algorithm between retries). This option  is
1486              only  interesting if --retry is also used. Setting this delay to
1487              zero will make curl use the default  backoff  time.   (Added  in
1488              7.12.3)
1489
1490              If this option is used several times, the last one will be used.
1491
1492       --retry-max-time <seconds>
1493              The  retry  timer  is  reset  before the first transfer attempt.
1494              Retries will be done as usual (see --retry) as long as the timer
1495              hasn't reached this given limit. Notice that if the timer hasn't
1496              reached the limit, the request will be made and  while  perform‐
1497              ing,  it may take longer than this given time period. To limit a
1498              single request´s maximum time, use  -m,  --max-time.   Set  this
1499              option to zero to not timeout retries. (Added in 7.12.3)
1500
1501              If this option is used several times, the last one will be used.
1502
1503       -s, --silent
1504              Silent  or  quiet  mode. Don't show progress meter or error mes‐
1505              sages.  Makes Curl mute.
1506
1507       -S, --show-error
1508              When used with -s it makes curl show  an  error  message  if  it
1509              fails.
1510
1511       --ssl  (FTP,  POP3,  IMAP, SMTP) Try to use SSL/TLS for the connection.
1512              Reverts to a non-secure connection if the server doesn't support
1513              SSL/TLS.   See also --ftp-ssl-control and --ssl-reqd for differ‐
1514              ent levels of encryption required. (Added in 7.20.0)
1515
1516              This option was formerly known as --ftp-ssl (Added  in  7.11.0).
1517              That  option  name  can  still  be used but will be removed in a
1518              future version.
1519
1520       --ssl-reqd
1521              (FTP, POP3, IMAP, SMTP)  Require  SSL/TLS  for  the  connection.
1522              Terminates the connection if the server doesn't support SSL/TLS.
1523              (Added in 7.20.0)
1524
1525              This option was  formerly  known  as  --ftp-ssl-reqd  (added  in
1526              7.15.5).  That option name can still be used but will be removed
1527              in a future version.
1528
1529       --ssl-allow-beast
1530              (SSL) This option tells curl to not work around a security  flaw
1531              in the SSL3 and TLS1.0 protocols known as BEAST.  If this option
1532              isn't used, the SSL layer may use work-arounds  known  to  cause
1533              interoperability  problems  with some older SSL implementations.
1534              WARNING: this option loosens the SSL security, and by using this
1535              flag you ask for exactly that.  (Added in 7.25.0)
1536
1537       --socks4 <host[:port]>
1538              Use the specified SOCKS4 proxy. If the port number is not speci‐
1539              fied, it is assumed at port 1080. (Added in 7.15.2)
1540
1541              This option overrides any previous use of -x, --proxy,  as  they
1542              are mutually exclusive.
1543
1544              Since 7.21.7, this option is superfluous since you can specify a
1545              socks4 proxy with -x, --proxy using a socks4:// protocol prefix.
1546
1547              If this option is used several times, the last one will be used.
1548
1549       --socks4a <host[:port]>
1550              Use the specified SOCKS4a proxy. If the port number is not spec‐
1551              ified, it is assumed at port 1080. (Added in 7.18.0)
1552
1553              This  option  overrides any previous use of -x, --proxy, as they
1554              are mutually exclusive.
1555
1556              Since 7.21.7, this option is superfluous since you can specify a
1557              socks4a  proxy with -x, --proxy using a socks4a:// protocol pre‐
1558              fix.
1559
1560              If this option is used several times, the last one will be used.
1561
1562       --socks5-basic
1563              Tells curl to use username/password authentication when connect‐
1564              ing  to a SOCKS5 proxy.  The username/password authentication is
1565              enabled  by  default.   Use  --socks5-gssapi  to  force  GSS-API
1566              authentication to SOCKS5 proxies.  (Added in 7.55.0)
1567
1568       --socks5-gssapi
1569              Tells  curl  to  use GSS-API authentication when connecting to a
1570              SOCKS5 proxy.  The GSS-API authentication is enabled by  default
1571              (if  curl is compiled with GSS-API support).  Use --socks5-basic
1572              to force username/password  authentication  to  SOCKS5  proxies.
1573              (Added in 7.55.0)
1574
1575       --socks5-hostname <host[:port]>
1576              Use  the  specified  SOCKS5 proxy (and let the proxy resolve the
1577              host name). If the port number is not specified, it  is  assumed
1578              at port 1080. (Added in 7.18.0)
1579
1580              This  option  overrides any previous use of -x, --proxy, as they
1581              are mutually exclusive.
1582
1583              Since 7.21.7, this option is superfluous since you can specify a
1584              socks5 hostname proxy with -x, --proxy using a socks5h:// proto‐
1585              col prefix.
1586
1587              If this option is used several times, the last one will be used.
1588              (This  option  was  previously  wrongly  documented  and used as
1589              --socks without the number appended.)
1590
1591       --socks5 <host[:port]>
1592              Use the specified SOCKS5 proxy  -  but  resolve  the  host  name
1593              locally.  If  the port number is not specified, it is assumed at
1594              port 1080.
1595
1596              This option overrides any previous use of -x, --proxy,  as  they
1597              are mutually exclusive.
1598
1599              Since 7.21.7, this option is superfluous since you can specify a
1600              socks5 proxy with -x, --proxy using a socks5:// protocol prefix.
1601
1602              If this option is used several times, the last one will be used.
1603              (This  option  was  previously  wrongly  documented  and used as
1604              --socks without the number appended.)
1605
1606              This option (as well as --socks4) does not work with IPV6,  FTPS
1607              or LDAP.
1608
1609       --socks5-gssapi-service <servicename>
1610              The default service name for a socks server is rcmd/server-fqdn.
1611              This option allows you to change it.
1612
1613              Examples:  --socks5  proxy-name  --socks5-gssapi-service   sockd
1614              would  use sockd/proxy-name --socks5 proxy-name --socks5-gssapi-
1615              service sockd/real-name  would  use  sockd/real-name  for  cases
1616              where  the proxy-name does not match the principal name.  (Added
1617              in 7.19.4).
1618
1619       --socks5-gssapi-nec
1620              As part of the gssapi negotiation a protection mode  is  negoti‐
1621              ated.  RFC  1961 says in section 4.3/4.4 it should be protected,
1622              but the NEC  reference  implementation  does  not.   The  option
1623              --socks5-gssapi-nec  allows the unprotected exchange of the pro‐
1624              tection mode negotiation. (Added in 7.19.4).
1625
1626       --stderr <file>
1627              Redirect all writes to stderr to the specified file instead.  If
1628              the file name is a plain '-', it is instead written to stdout.
1629
1630              If this option is used several times, the last one will be used.
1631
1632       -t, --telnet-option <OPT=val>
1633              Pass options to the telnet protocol. Supported options are:
1634
1635              TTYPE=<term> Sets the terminal type.
1636
1637              XDISPLOC=<X display> Sets the X display location.
1638
1639              NEW_ENV=<var,val> Sets an environment variable.
1640
1641       -T, --upload-file <file>
1642              This  transfers  the  specified local file to the remote URL. If
1643              there is no file part in the specified URL, Curl will append the
1644              local file name. NOTE that you must use a trailing / on the last
1645              directory to really prove to Curl that there is no file name  or
1646              curl will think that your last directory name is the remote file
1647              name to use. That will most likely cause the upload operation to
1648              fail. If this is used on an HTTP(S) server, the PUT command will
1649              be used.
1650
1651              Use the file name "-" (a single dash) to use stdin instead of  a
1652              given  file.   Alternately,  the file name "." (a single period)
1653              may be specified instead of "-" to  use  stdin  in  non-blocking
1654              mode  to  allow  reading  server  output  while  stdin  is being
1655              uploaded.
1656
1657              You can specify one -T for each URL on the command line. Each -T
1658              + URL pair specifies what to upload and to where. curl also sup‐
1659              ports "globbing" of the -T argument, meaning that you can upload
1660              multiple  files  to  a single URL by using the same URL globbing
1661              style supported in the URL, like this:
1662
1663              curl -T "{file1,file2}" http://www.uploadtothissite.com
1664
1665              or even
1666
1667              curl -T "img[1-1000].png" ftp://ftp.picturemania.com/upload/
1668
1669       --tcp-nodelay
1670              Turn on the TCP_NODELAY option. See the curl_easy_setopt(3)  man
1671              page for details about this option. (Added in 7.11.2)
1672
1673       --tftp-blksize <value>
1674              (TFTP) Set TFTP BLKSIZE option (must be >512). This is the block
1675              size that curl will try to use when transferring data to or from
1676              a TFTP server. By default 512 bytes will be used.
1677
1678              If this option is used several times, the last one will be used.
1679
1680              (Added in 7.20.0)
1681
1682       --tlsauthtype <authtype>
1683              Set  TLS  authentication  type.  Currently,  the  only supported
1684              option is "SRP",  for  TLS-SRP  (RFC  5054).  If  --tlsuser  and
1685              --tlspassword  are specified but --tlsauthtype is not, then this
1686              option defaults to "SRP".  This option works only if the  under‐
1687              lying  libcurl  is  built  with  TLS-SRP support, which requires
1688              OpenSSL or GnuTLS with TLS-SRP support.  (Added in 7.21.4)
1689
1690       --tlspassword <password>
1691              Set password for use with the TLS authentication  method  speci‐
1692              fied  with  --tlsauthtype.  Requires that --tlsuser also be set.
1693              (Added in 7.21.4)
1694
1695       --tlsuser <user>
1696              Set username for use with the TLS authentication  method  speci‐
1697              fied  with  --tlsauthtype.  Requires  that --tlspassword also be
1698              set.  (Added in 7.21.4)
1699
1700       --tlsv1.0
1701              (SSL) Forces curl to use TLS version 1.0 when negotiating with a
1702              remote TLS server.  (Added in 7.34.0)
1703
1704       --tlsv1.1
1705              (SSL) Forces curl to use TLS version 1.1 when negotiating with a
1706              remote TLS server.  (Added in 7.34.0)
1707
1708       --tlsv1.2
1709              (SSL) Forces curl to use TLS version 1.2 when negotiating with a
1710              remote TLS server.  (Added in 7.34.0)
1711
1712       --tr-encoding
1713              (HTTP) Request a compressed Transfer-Encoding response using one
1714              of the algorithms curl supports, and uncompress the  data  while
1715              receiving it.
1716
1717              (Added in 7.21.6)
1718
1719       --trace <file>
1720              Enables  a  full  trace  dump of all incoming and outgoing data,
1721              including descriptive information, to the given output file. Use
1722              "-" as filename to have the output sent to stdout.
1723
1724              This option overrides previous uses of -v, --verbose or --trace-
1725              ascii.
1726
1727              If this option is used several times, the last one will be used.
1728
1729       --trace-ascii <file>
1730              Enables a full trace dump of all  incoming  and  outgoing  data,
1731              including descriptive information, to the given output file. Use
1732              "-" as filename to have the output sent to stdout.
1733
1734              This is very similar to --trace, but leaves out the hex part and
1735              only  shows  the ASCII part of the dump. It makes smaller output
1736              that might be easier to read for untrained humans.
1737
1738              This option overrides previous uses of -v, --verbose or --trace.
1739
1740              If this option is used several times, the last one will be used.
1741
1742       --trace-time
1743              Prepends a time stamp to each trace or verbose  line  that  curl
1744              displays.  (Added in 7.14.0)
1745
1746       --unix-socket <path>
1747              (HTTP) Connect through this UNIX domain socket, instead of using
1748              the network. (Added in 7.40.0)
1749
1750       -u, --user <user:password>
1751              Specify the user name and password to use for server authentica‐
1752              tion. Overrides -n, --netrc and --netrc-optional.
1753
1754              If  you  just give the user name (without entering a colon) curl
1755              will prompt for a password.
1756
1757              If you use an SSPI-enabled curl binary and do  NTLM  authentica‐
1758              tion,  you  can force curl to pick up the user name and password
1759              from your environment by simply specifying a single  colon  with
1760              this option: "-u :".
1761
1762              If this option is used several times, the last one will be used.
1763
1764       -U, --proxy-user <user:password>
1765              Specify  the user name and password to use for proxy authentica‐
1766              tion.
1767
1768              If you use an SSPI-enabled curl binary and do  NTLM  authentica‐
1769              tion,  you  can force curl to pick up the user name and password
1770              from your environment by simply specifying a single  colon  with
1771              this option: "-U :".
1772
1773              If this option is used several times, the last one will be used.
1774
1775       --url <URL>
1776              Specify  a  URL  to  fetch. This option is mostly handy when you
1777              want to specify URL(s) in a config file.
1778
1779              This option may be used any number of times.  To  control  where
1780              this  URL  is written, use the -o, --output or the -O, --remote-
1781              name options.
1782
1783       -v, --verbose
1784              Makes the fetching more  verbose/talkative.  Mostly  useful  for
1785              debugging.  A line starting with '>' means "header data" sent by
1786              curl, '<' means "header data" received by curl that is hidden in
1787              normal cases, and a line starting with '*' means additional info
1788              provided by curl.
1789
1790              Note that if you only want  HTTP  headers  in  the  output,  -i,
1791              --include might be the option you're looking for.
1792
1793              If  you think this option still doesn't give you enough details,
1794              consider using --trace or --trace-ascii instead.
1795
1796              This option overrides previous uses of --trace-ascii or --trace.
1797
1798              Use -s, --silent to make curl quiet.
1799
1800       -w, --write-out <format>
1801              Defines what to display on stdout after a completed and success‐
1802              ful  operation.  The  format  is a string that may contain plain
1803              text mixed with any number of variables. The string can be spec‐
1804              ified  as "string", to get read from a particular file you spec‐
1805              ify it "@filename" and to tell curl  to  read  the  format  from
1806              stdin you write "@-".
1807
1808              The  variables  present in the output format will be substituted
1809              by the value or text that curl thinks fit, as  described  below.
1810              All  variables are specified as %{variable_name} and to output a
1811              normal % you just write them as %%. You can output a newline  by
1812              using \n, a carriage return with \r and a tab space with \t.
1813
1814              NOTE: The %-symbol is a special symbol in the win32-environment,
1815              where all occurrences of %  must  be  doubled  when  using  this
1816              option.
1817
1818              The variables available are:
1819
1820              content_type   The  Content-Type  of  the requested document, if
1821                             there was any.
1822
1823              filename_effective
1824                             The ultimate filename that curl  writes  out  to.
1825                             This  is only meaningful if curl is told to write
1826                             to a file  with  the  --remote-name  or  --output
1827                             option.  It's most useful in combination with the
1828                             --remote-header-name option. (Added in 7.25.1)
1829
1830              ftp_entry_path The initial path curl ended up in when logging on
1831                             to the remote FTP server. (Added in 7.15.4)
1832
1833              http_code      The numerical response code that was found in the
1834                             last retrieved HTTP(S)  or  FTP(s)  transfer.  In
1835                             7.18.2  the alias response_code was added to show
1836                             the same info.
1837
1838              http_connect   The numerical code that was  found  in  the  last
1839                             response   (from  a  proxy)  to  a  curl  CONNECT
1840                             request. (Added in 7.12.4)
1841
1842              local_ip       The IP address of  the  local  end  of  the  most
1843                             recently  done connection - can be either IPv4 or
1844                             IPv6 (Added in 7.29.0)
1845
1846              local_port     The local port number of the most  recently  done
1847                             connection (Added in 7.29.0)
1848
1849              num_connects   Number  of new connects made in the recent trans‐
1850                             fer. (Added in 7.12.3)
1851
1852              num_redirects  Number of redirects that  were  followed  in  the
1853                             request. (Added in 7.12.3)
1854
1855              redirect_url   When  an HTTP request was made without -L to fol‐
1856                             low redirects, this variable will show the actual
1857                             URL  a  redirect  would  take  you  to. (Added in
1858                             7.18.2)
1859
1860              remote_ip      The remote IP address of the most  recently  done
1861                             connection - can be either IPv4 or IPv6 (Added in
1862                             7.29.0)
1863
1864              remote_port    The remote port number of the most recently  done
1865                             connection (Added in 7.29.0)
1866
1867              size_download  The total amount of bytes that were downloaded.
1868
1869              size_header    The total amount of bytes of the downloaded head‐
1870                             ers.
1871
1872              size_request   The total amount of bytes that were sent  in  the
1873                             HTTP request.
1874
1875              size_upload    The total amount of bytes that were uploaded.
1876
1877              speed_download The average download speed that curl measured for
1878                             the complete download. Bytes per second.
1879
1880              speed_upload   The average upload speed that curl  measured  for
1881                             the complete upload. Bytes per second.
1882
1883              ssl_verify_result
1884                             The  result of the SSL peer certificate verifica‐
1885                             tion that was requested. 0 means the verification
1886                             was successful. (Added in 7.19.0)
1887
1888              time_appconnect
1889                             The  time,  in  seconds,  it  took from the start
1890                             until the SSL/SSH/etc  connect/handshake  to  the
1891                             remote host was completed. (Added in 7.19.0)
1892
1893              time_connect   The  time,  in  seconds,  it  took from the start
1894                             until the TCP connect  to  the  remote  host  (or
1895                             proxy) was completed.
1896
1897              time_namelookup
1898                             The  time,  in  seconds,  it  took from the start
1899                             until the name resolving was completed.
1900
1901              time_pretransfer
1902                             The time, in seconds,  it  took  from  the  start
1903                             until  the file transfer was just about to begin.
1904                             This includes all pre-transfer commands and nego‐
1905                             tiations that are specific to the particular pro‐
1906                             tocol(s) involved.
1907
1908              time_redirect  The time, in seconds, it took for all redirection
1909                             steps  include  name lookup, connect, pretransfer
1910                             and transfer before  the  final  transaction  was
1911                             started.  time_redirect shows the complete execu‐
1912                             tion time for multiple  redirections.  (Added  in
1913                             7.12.3)
1914
1915              time_starttransfer
1916                             The  time,  in  seconds,  it  took from the start
1917                             until the first byte was just about to be  trans‐
1918                             ferred.  This  includes time_pretransfer and also
1919                             the time  the  server  needed  to  calculate  the
1920                             result.
1921
1922              time_total     The  total time, in seconds, that the full opera‐
1923                             tion lasted. The time will be displayed with mil‐
1924                             lisecond resolution.
1925
1926              url_effective  The URL that was fetched last. This is most mean‐
1927                             ingful if you've told curl  to  follow  location:
1928                             headers.
1929
1930       If this option is used several times, the last one will be used.
1931
1932       -x, --proxy <[protocol://][user:password@]proxyhost[:port]>
1933              Use  the  specified HTTP proxy. If the port number is not speci‐
1934              fied, it is assumed at port 1080.
1935
1936              This option overrides existing environment  variables  that  set
1937              the  proxy  to use. If there's an environment variable setting a
1938              proxy, you can set proxy to "" to override it.
1939
1940              All operations that are performed over an HTTP proxy will trans‐
1941              parently  be  converted  to HTTP. It means that certain protocol
1942              specific operations might not be available. This is not the case
1943              if you can tunnel through the proxy, as one with the -p, --prox‐
1944              ytunnel option.
1945
1946              User and password that might be provided in the proxy string are
1947              URL  decoded by curl. This allows you to pass in special charac‐
1948              ters such as @ by using %40 or pass in a colon with %3a.
1949
1950              The proxy host can be specified the exact same way as the  proxy
1951              environment  variables,  including the protocol prefix (http://)
1952              and the embedded user + password.
1953
1954              From 7.21.7, the proxy string may be  specified  with  a  proto‐
1955              col://  prefix  to  specify  alternative  proxy  protocols.  Use
1956              socks4://, socks4a://, socks5:// or socks5h://  to  request  the
1957              specific  SOCKS  version  to  be  used.  No  protocol specified,
1958              http:// and all others will be treated as HTTP proxies.
1959
1960              If this option is used several times, the last one will be used.
1961
1962       -X, --request <command>
1963              (HTTP) Specifies a custom request method to use when communicat‐
1964              ing  with  the  HTTP server.  The specified request will be used
1965              instead of the method otherwise used (which  defaults  to  GET).
1966              Read  the  HTTP  1.1 specification for details and explanations.
1967              Common additional HTTP requests  include  PUT  and  DELETE,  but
1968              related technologies like WebDAV offers PROPFIND, COPY, MOVE and
1969              more.
1970
1971              Normally you don't need this option. All  sorts  of  GET,  HEAD,
1972              POST and PUT requests are rather invoked by using dedicated com‐
1973              mand line options.
1974
1975              This option only changes  the  actual  word  used  in  the  HTTP
1976              request,  it does not alter the way curl behaves. So for example
1977              if you want to make a proper HEAD request, using  -X  HEAD  will
1978              not suffice. You need to use the -I, --head option.
1979
1980              (FTP) Specifies a custom FTP command to use instead of LIST when
1981              doing file lists with FTP.
1982
1983              If this option is used several times, the last one will be used.
1984
1985
1986       --xattr
1987              When saving output to a file, this option tells  curl  to  store
1988              certain file metadata in extened file attributes. Currently, the
1989              URL is stored in the xdg.origin.url attribute and, for HTTP, the
1990              content  type  is stored in the mime_type attribute. If the file
1991              system does  not  support  extended  attributes,  a  warning  is
1992              issued.
1993
1994
1995       -y, --speed-time <time>
1996              If a download is slower than speed-limit bytes per second during
1997              a speed-time period, the download gets aborted. If speed-time is
1998              used, the default speed-limit will be 1 unless set with -Y.
1999
2000              This  option  controls  transfers  and thus will not affect slow
2001              connects etc. If this is a concern for you, try  the  --connect-
2002              timeout option.
2003
2004              If this option is used several times, the last one will be used.
2005
2006       -Y, --speed-limit <speed>
2007              If a download is slower than this given speed (in bytes per sec‐
2008              ond) for speed-time seconds it gets aborted. speed-time  is  set
2009              with -y and is 30 if not set.
2010
2011              If this option is used several times, the last one will be used.
2012
2013       -z, --time-cond <date expression>|<file>
2014              (HTTP/FTP)  Request a file that has been modified later than the
2015              given time and date, or one that has been modified  before  that
2016              time.  The <date expression> can be all sorts of date strings or
2017              if it doesn't match any internal ones, it is taken as a filename
2018              and  tries  to  get  the  modification  date (mtime) from <file>
2019              instead. See the curl_getdate(3) man pages for  date  expression
2020              details.
2021
2022              Start the date expression with a dash (-) to make it request for
2023              a document that is older than the given date/time, default is  a
2024              document that is newer than the specified date/time.
2025
2026              If this option is used several times, the last one will be used.
2027
2028       -h, --help
2029              Usage help.
2030
2031       -M, --manual
2032              Manual. Display the huge help text.
2033
2034       -V, --version
2035              Displays information about curl and the libcurl version it uses.
2036
2037              The  first  line  includes the full version of curl, libcurl and
2038              other 3rd party libraries linked with the executable.
2039
2040              The second line (starts with "Protocols:") shows  all  protocols
2041              that libcurl reports to support.
2042
2043              The third line (starts with "Features:") shows specific features
2044              libcurl reports to offer. Available features include:
2045
2046              IPv6   You can use IPv6 with this.
2047
2048              krb4   Krb4 for FTP is supported.
2049
2050              SSL    HTTPS and FTPS are supported.
2051
2052              libz   Automatic decompression of compressed files over HTTP  is
2053                     supported.
2054
2055              NTLM   NTLM authentication is supported.
2056
2057              GSS-Negotiate
2058                     Negotiate authentication and krb5 for FTP is supported.
2059
2060              Debug  This  curl  uses a libcurl built with Debug. This enables
2061                     more error-tracking and memory debugging etc.  For  curl-
2062                     developers only!
2063
2064              AsynchDNS
2065                     This curl uses asynchronous name resolves.
2066
2067              SPNEGO SPNEGO Negotiate authentication is supported.
2068
2069              Largefile
2070                     This curl supports transfers of large files, files larger
2071                     than 2GB.
2072
2073              IDN    This curl supports IDN - international domain names.
2074
2075              SSPI   SSPI is supported. If you use NTLM and set a  blank  user
2076                     name,  curl  will authenticate with your current user and
2077                     password.
2078
2079              TLS-SRP
2080                     SRP (Secure Remote Password) authentication is  supported
2081                     for TLS.
2082
2083              Metalink
2084                     This  curl  supports  Metalink (both version 3 and 4 (RFC
2085                     5854)), which describes mirrors and  hashes.   curl  will
2086                     use mirrors for failover if there are errors (such as the
2087                     file or server not being available).
2088

FILES

2090       ~/.curlrc
2091              Default config file, see -K, --config for details.
2092

ENVIRONMENT

2094       The environment variables can be specified in lower case or upper case.
2095       The lower case version has precedence. http_proxy is an exception as it
2096       is only available in lower case.
2097
2098       Using an environment variable to set the proxy has the same  effect  as
2099       using the --proxy option.
2100
2101
2102       http_proxy [protocol://]<host>[:port]
2103              Sets the proxy server to use for HTTP.
2104
2105       HTTPS_PROXY [protocol://]<host>[:port]
2106              Sets the proxy server to use for HTTPS.
2107
2108       [url-protocol]_PROXY [protocol://]<host>[:port]
2109              Sets  the proxy server to use for [url-protocol], where the pro‐
2110              tocol is a protocol that curl supports and  as  specified  in  a
2111              URL. FTP, FTPS, POP3, IMAP, SMTP, LDAP etc.
2112
2113       ALL_PROXY [protocol://]<host>[:port]
2114              Sets  the  proxy  server to use if no protocol-specific proxy is
2115              set.
2116
2117       NO_PROXY <comma-separated list of hosts>
2118              list of host names that shouldn't go through any proxy.  If  set
2119              to a asterisk '*' only, it matches all hosts.
2120

PROXY PROTOCOL PREFIXES

2122       Since  curl  version  7.21.7,  the proxy string may be specified with a
2123       protocol:// prefix to specify alternative proxy protocols.
2124
2125       If no protocol is specified in  the  proxy  string  or  if  the  string
2126       doesn't  match  a  supported  one, the proxy will be treated as an HTTP
2127       proxy.
2128
2129       The supported proxy protocol prefixes are as follows:
2130
2131       socks4://
2132              Makes it the equivalent of --socks4
2133
2134       socks4a://
2135              Makes it the equivalent of --socks4a
2136
2137       socks5://
2138              Makes it the equivalent of --socks5
2139
2140       socks5h://
2141              Makes it the equivalent of --socks5-hostname
2142

EXIT CODES

2144       There are a bunch of different  error  codes  and  their  corresponding
2145       error  messages  that  may appear during bad conditions. At the time of
2146       this writing, the exit codes are:
2147
2148       1      Unsupported protocol. This build of curl has no support for this
2149              protocol.
2150
2151       2      Failed to initialize.
2152
2153       3      URL malformed. The syntax was not correct.
2154
2155       4      A  feature  or  option  that  was  needed to perform the desired
2156              request was not enabled or was  explicitly  disabled  at  build-
2157              time.  To  make  curl able to do this, you probably need another
2158              build of libcurl!
2159
2160       5      Couldn't resolve proxy.  The  given  proxy  host  could  not  be
2161              resolved.
2162
2163       6      Couldn't resolve host. The given remote host was not resolved.
2164
2165       7      Failed to connect to host.
2166
2167       8      FTP  weird  server  reply.  The  server  sent data curl couldn't
2168              parse.
2169
2170       9      FTP access denied. The server denied login or denied  access  to
2171              the  particular  resource or directory you wanted to reach. Most
2172              often you tried to change to a directory that doesn't  exist  on
2173              the server.
2174
2175       11     FTP  weird PASS reply. Curl couldn't parse the reply sent to the
2176              PASS request.
2177
2178       13     FTP weird PASV reply, Curl couldn't parse the reply sent to  the
2179              PASV request.
2180
2181       14     FTP  weird  227  format.  Curl  couldn't  parse the 227-line the
2182              server sent.
2183
2184       15     FTP can't get host. Couldn't resolve the host IP we got  in  the
2185              227-line.
2186
2187       17     FTP  couldn't  set  binary.  Couldn't  change transfer method to
2188              binary.
2189
2190       18     Partial file. Only a part of the file was transferred.
2191
2192       19     FTP couldn't download/access the given file, the RETR (or  simi‐
2193              lar) command failed.
2194
2195       21     FTP quote error. A quote command returned error from the server.
2196
2197       22     HTTP  page  not  retrieved.  The  requested url was not found or
2198              returned another error with the HTTP error  code  being  400  or
2199              above. This return code only appears if -f, --fail is used.
2200
2201       23     Write  error.  Curl couldn't write data to a local filesystem or
2202              similar.
2203
2204       25     FTP couldn't STOR file. The server denied  the  STOR  operation,
2205              used for FTP uploading.
2206
2207       26     Read error. Various reading problems.
2208
2209       27     Out of memory. A memory allocation request failed.
2210
2211       28     Operation  timeout.  The  specified  time-out period was reached
2212              according to the conditions.
2213
2214       30     FTP PORT failed. The PORT command failed. Not  all  FTP  servers
2215              support  the  PORT  command,  try  doing  a  transfer using PASV
2216              instead!
2217
2218       31     FTP couldn't use REST. The REST command failed. This command  is
2219              used for resumed FTP transfers.
2220
2221       33     HTTP range error. The range "command" didn't work.
2222
2223       34     HTTP post error. Internal post-request generation error.
2224
2225       35     SSL connect error. The SSL handshaking failed.
2226
2227       36     FTP  bad  download  resume. Couldn't continue an earlier aborted
2228              download.
2229
2230       37     FILE couldn't read file. Failed to open the file. Permissions?
2231
2232       38     LDAP cannot bind. LDAP bind operation failed.
2233
2234       39     LDAP search failed.
2235
2236       41     Function not found. A required LDAP function was not found.
2237
2238       42     Aborted by callback. An application told curl to abort the oper‐
2239              ation.
2240
2241       43     Internal error. A function was called with a bad parameter.
2242
2243       45     Interface  error.  A  specified  outgoing interface could not be
2244              used.
2245
2246       47     Too many redirects. When following redirects, curl hit the maxi‐
2247              mum amount.
2248
2249       48     Unknown  option  specified  to  libcurl. This indicates that you
2250              passed a weird option to curl that was passed on to libcurl  and
2251              rejected. Read up in the manual!
2252
2253       49     Malformed telnet option.
2254
2255       51     The peer's SSL certificate or SSH MD5 fingerprint was not OK.
2256
2257       52     The  server  didn't  reply anything, which here is considered an
2258              error.
2259
2260       53     SSL crypto engine not found.
2261
2262       54     Cannot set SSL crypto engine as default.
2263
2264       55     Failed sending network data.
2265
2266       56     Failure in receiving network data.
2267
2268       58     Problem with the local certificate.
2269
2270       59     Couldn't use specified SSL cipher.
2271
2272       60     Peer certificate cannot be authenticated with known CA  certifi‐
2273              cates.
2274
2275       61     Unrecognized transfer encoding.
2276
2277       62     Invalid LDAP URL.
2278
2279       63     Maximum file size exceeded.
2280
2281       64     Requested FTP SSL level failed.
2282
2283       65     Sending the data requires a rewind that failed.
2284
2285       66     Failed to initialise SSL Engine.
2286
2287       67     The  user  name,  password, or similar was not accepted and curl
2288              failed to log in.
2289
2290       68     File not found on TFTP server.
2291
2292       69     Permission problem on TFTP server.
2293
2294       70     Out of disk space on TFTP server.
2295
2296       71     Illegal TFTP operation.
2297
2298       72     Unknown TFTP transfer ID.
2299
2300       73     File already exists (TFTP).
2301
2302       74     No such user (TFTP).
2303
2304       75     Character conversion failed.
2305
2306       76     Character conversion functions required.
2307
2308       77     Problem with reading the SSL CA cert (path? access rights?).
2309
2310       78     The resource referenced in the URL does not exist.
2311
2312       79     An unspecified error occurred during the SSH session.
2313
2314       80     Failed to shut down the SSL connection.
2315
2316       82     Could not load CRL file,  missing  or  wrong  format  (added  in
2317              7.19.0).
2318
2319       83     Issuer check failed (added in 7.19.0).
2320
2321       84     The FTP PRET command failed
2322
2323       85     RTSP: mismatch of CSeq numbers
2324
2325       86     RTSP: mismatch of Session Identifiers
2326
2327       87     unable to parse FTP file list
2328
2329       88     FTP chunk callback reported error
2330
2331       XX     More error codes will appear here in future releases. The exist‐
2332              ing ones are meant to never change.
2333

AUTHORS / CONTRIBUTORS

2335       Daniel Stenberg is the main author, but the whole list of  contributors
2336       is found in the separate THANKS file.
2337

WWW

2339       http://curl.haxx.se
2340

FTP

2342       ftp://ftp.sunet.se/pub/www/utilities/curl/
2343

SEE ALSO

2345       ftp(1), wget(1)
2346
2347
2348
2349Curl 7.27.0                      27 July 2012                          curl(1)
Impressum