blob: ee5af14774b93a0851cedad38c088dcdede5cdc3 [file] [log] [blame]
lh9ed821d2023-04-07 01:36:19 -07001.\" **************************************************************************
2.\" * _ _ ____ _
3.\" * Project ___| | | | _ \| |
4.\" * / __| | | | |_) | |
5.\" * | (__| |_| | _ <| |___
6.\" * \___|\___/|_| \_\_____|
7.\" *
8.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
9.\" *
10.\" * This software is licensed as described in the file COPYING, which
11.\" * you should have received as part of this distribution. The terms
12.\" * are also available at https://curl.haxx.se/docs/copyright.html.
13.\" *
14.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
15.\" * copies of the Software, and permit persons to whom the Software is
16.\" * furnished to do so, under the terms of the COPYING file.
17.\" *
18.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19.\" * KIND, either express or implied.
20.\" *
21.\" **************************************************************************
22.\"
23.\" DO NOT EDIT. Generated by the curl project gen.pl man page generator.
24.\"
25.TH curl 1 "16 Dec 2016" "Curl 7.52.0" "Curl Manual"
26.SH NAME
27curl \- transfer a URL
28.SH SYNOPSIS
29.B curl [options]
30.I [URL...]
31.SH DESCRIPTION
32.B curl
33is a tool to transfer data from or to a server, using one of the supported
34protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP,
35LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET
36and TFTP). The command is designed to work without user interaction.
37
38curl offers a busload of useful tricks like proxy support, user
39authentication, FTP upload, HTTP post, SSL connections, cookies, file transfer
40resume, Metalink, and more. As you will see below, the number of features will
41make your head spin!
42
43curl is powered by libcurl for all transfer-related features. See
44\fIlibcurl(3)\fP for details.
45.SH URL
46The URL syntax is protocol-dependent. You'll find a detailed description in
47RFC 3986.
48
49You can specify multiple URLs or parts of URLs by writing part sets within
50braces as in:
51
52 http://site.{one,two,three}.com
53
54or you can get sequences of alphanumeric series by using [] as in:
55
56 ftp://ftp.example.com/file[1-100].txt
57
58 ftp://ftp.example.com/file[001-100].txt (with leading zeros)
59
60 ftp://ftp.example.com/file[a-z].txt
61
62Nested sequences are not supported, but you can use several ones next to each
63other:
64
65 http://example.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html
66
67You can specify any amount of URLs on the command line. They will be fetched
68in a sequential manner in the specified order.
69
70You can specify a step counter for the ranges to get every Nth number or
71letter:
72
73 http://example.com/file[1-100:10].txt
74
75 http://example.com/file[a-z:2].txt
76
77When using [] or {} sequences when invoked from a command line prompt, you
78probably have to put the full URL within double quotes to avoid the shell from
79interfering with it. This also goes for other characters treated special, like
80for example '&', '?' and '*'.
81
82Provide the IPv6 zone index in the URL with an escaped percentage sign and the
83interface name. Like in
84
85 http://[fe80::3%25eth0]/
86
87If you specify URL without protocol:// prefix, curl will attempt to guess what
88protocol you might want. It will then default to HTTP but try other protocols
89based on often-used host name prefixes. For example, for host names starting
90with "ftp." curl will assume you want to speak FTP.
91
92curl will do its best to use what you pass to it as a URL. It is not trying to
93validate it as a syntactically correct URL by any means but is instead
94\fBvery\fP liberal with what it accepts.
95
96curl will attempt to re-use connections for multiple file transfers, so that
97getting many files from the same server will not do multiple connects /
98handshakes. This improves speed. Of course this is only done on files
99specified on a single command line and cannot be used between separate curl
100invokes.
101.SH "PROGRESS METER"
102curl normally displays a progress meter during operations, indicating the
103amount of transferred data, transfer speeds and estimated time left, etc. The
104progress meter displays number of bytes and the speeds are in bytes per
105second. The suffixes (k, M, G, T, P) are 1024 based. For example 1k is 1024
106bytes. 1M is 1048576 bytes.
107
108curl displays this data to the terminal by default, so if you invoke curl to
109do an operation and it is about to write data to the terminal, it
110\fIdisables\fP the progress meter as otherwise it would mess up the output
111mixing progress meter and response data.
112
113If you want a progress meter for HTTP POST or PUT requests, you need to
114redirect the response output to a file, using shell redirect (>), --output or
115similar.
116
117It is not the same case for FTP upload as that operation does not spit out
118any response data to the terminal.
119
120If you prefer a progress "bar" instead of the regular meter, --progress-bar is
121your friend. You can also disable the progress meter completely with the
122--silent option.
123.SH OPTIONS
124Options start with one or two dashes. Many of the options require an
125additional value next to them.
126
127The short "single-dash" form of the options, -d for example, may be used with
128or without a space between it and its value, although a space is a recommended
129separator. The long "double-dash" form, --data for example, requires a space
130between it and its value.
131
132Short version options that don't need any additional values can be used
133immediately next to each other, like for example you can specify all the
134options -O, -L and -v at once as -OLv.
135
136In general, all boolean options are enabled with --\fBoption\fP and yet again
137disabled with --\fBno-\fPoption. That is, you use the exact same option name
138but prefix it with "no-". However, in this list we mostly only list and show
139the --option version of them. (This concept with --no options was added in
1407.19.0. Previously most options were toggled on/off on repeated use of the
141same command line option.)