1curl(1) Curl Manual curl(1)
2
3
4
6 curl - transfer a URL
7
9 curl [options] [URL...]
10
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
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
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
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
2090 ~/.curlrc
2091 Default config file, see -K, --config for details.
2092
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
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
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
2335 Daniel Stenberg is the main author, but the whole list of contributors
2336 is found in the separate THANKS file.
2337
2339 http://curl.haxx.se
2340
2342 ftp://ftp.sunet.se/pub/www/utilities/curl/
2343
2345 ftp(1), wget(1)
2346
2347
2348
2349Curl 7.27.0 27 July 2012 curl(1)