curl: Cheat Sheet
Published: April 18, 2020Learn essential commands for transferring data with URLs, making HTTP requests, and downloading files with this quick reference guide. Perfect for developers and system administrators!
Curl is a command-line tool for transferring data with URLs. It supports various protocols and is commonly used for HTTP requests and file transfers.
Download to STDOUT
curl http://www.example.com
Save response to file
Save to specified file name:
curl -o my_file http://www.example.com
Save to file name from URL
curl -O http://www.example.com/index.html
Fetch multiple files
curl -O http://www.example.com/this.html -O http://www.example.com/that.html
Continue/Resume download
After interruption of a download, resume using where '-' in '-C -' indicates resume at offset that was already downloaded. Otherwise an offset value can be provided.
curl -C - http://www.example.com
Follow redirects
curl -L http://www.example.com
Limit rate of transfer
In this example limit rate of transfer to 1000B per second
curl --limit-rate 1000B -O http://www.example.com/bigfile.html
Fetch if modified before/after time
Works for FTP and HTTP
Fetch if modified after 12/21/2017
curl -z 21-Dec-17 http://www.example.com
Fetch if modified before 12/21/2017
curl -z -21-Dec-17 http://www.example.com
HTTP Auth
curl -u username:password http://www.example.com
FTP Auth
curl -u username:password -O ftp://www.example.com/index.html
Upload to FTP
Upload one file
curl -u user:pass -T file.txt ftp://www.exmaple.com
Upload multiple files
curl -u user:pass -T "{file1.txt,file2.txt}" ftp://www.exmaple.com
Upload from STDIN
curl -u user:pass -T - ftp://www.exmaple.com/file.txt
Verbose/Trace
Print protocol details
curl -v http://www.example.com
Dump data transfer
curl --trace http://www.exmaple.com
Send Mail
curl --mail-from you@here.com --mail-rcpt them@there.com smtp://example.com
Send cookies
Send from file
curl -b cookie_file http://www.example.com
Send value where name=value is a valid cookie string
curl -b "name=value" http://www.example.com
Send multiple cookies
curl -b "name1=value1; name2=value2" http://www.example.com
Skip session cookies
curl -b cookie_file -j http://www.example.com
Save Cookies
curl -c cookie_file http://www.example.com
Request Header
curl --header "HEADER1" --header "HEADER" http://www.example.com
HTTP Method
Default method is GET but can specify POST, PATCH, PUT, and DELETE. Wonder what else is supported
Post
curl -X POST http://www.example.com
Post with parameters
curl -X POST http://www.example.com?p1=v1&p2=v2
Post with parameters in request body
curl -X POST -d "p1=v1&p2=v2" http://www.example.com
Post with JSON in request body
curl -X POST -d "{'name':'value'}" http://www.example.com
Post with file in request body
curl -X POST -d @file.json http://www.example.com
Post form parameters
curl -X POST -F foo=bar -F bar=baz http://www.example.com
Post form parameters with upload
curl -X POST -F foo=bar -F bar=@file.png http://www.example.com
Cookie File Format
Tab delimited set of cookies, one per line with the following values:
- domain - domain that created and read the variable
- flag - TRUE/FALSE value indicating if machine with domain can read the variable, usually set by browser based on value set for domain
- path - The path within the domain variable is valid for
- secure - TRUE/FALSE value indicating if secure connection is required to access variable
- expiration - Unix time variable will expire, which is number of seconds since Jan 1, 1970 00:00:00 GMT
- name - name of variable
- value - value of variable