What is Curl?
Curl is a command-line utility for Linux, Windows, and Mac that provides basic URL handling and file transfer capabilities. Curl supports the following protocols: FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, LDAP, POP3, IMAP, and SMTP. Curl is great for mimicking user actions on pages, testing APIs, and other URL operations, have built-in support for SSL, proxies, certificate validation, HTTP Cookies, and user authentication.
What is a flag in Curl?
A flag is a command-line parameter that denotes a specific action in Curl. Curl has over three hundred command-line options, and the number of options increases over time. You can add the listed flags to the Curl command and enter the URL. Flags can be short (like o, -L, etc.) or extended (like --verbose). Flags are available with single or double dashes.
How can I see the list of parameters in Curl?
To determine which parameters you need to use as a specific action, you can force Curl to enumerate them. First, the Curl --help or -h command will give you a list of the most important and commonly used options. Use curl -h [category] to list all existing types, or curl -h [all] to list all available options. Curl can combine commands by adding the listed flags and entering the URL.
20 most popular Curl flags for everyday use
The table below does not show all of the Curl options, but some of them you will use in your projects.
Flags | Description | Syntax |
---|---|---|
-O | Download the file and save it under the original name | |
-o | Download the file and save it with a different name | |
-X | Specify the HTTP method to be used when sending the request | |
-I or -head | Print the title without the body of the document | |
-d | Specify the data to send to the server | |
-k or -insecure | Ignore SSL Certificate Errors | |
-u or --user | Specify the authentication data by passing a pair of login-password | |
-F | Submit form data as POST request | |
--cookie | Send HTTP cookies | |
-x or --proxy | Use a proxy server to upload files | |
--limit-rate | Limit the download speed | |
-L or --location | Follow Curl redirect using HTTP Location header | |
-v | Makes Curl verbose | |
-m or --max-time | Set a limit in seconds for the entire operation | |
--connect-timeout | Set a limit in seconds for a connection request | |
-T | Transfers the specified local file to a remote URL | |
-H or --header | Add additional HTTP request header | |
-D | Save the HTTP headers that the site sends back | |
-A or --user-agent | Set User-Agent string | |
-C | Resume an interrupted or intentionally stopped download |
Conclusion
Curl is a powerful command-line tool compatible with almost all operating systems and connected devices. Curl is helpful for API testing, has detailed information about what was sent/received to the server, and has good error logging. Only the basic flags are shown in the article as they offer many more options. When you're done practicing the command line flags described in this tutorial, you can head over to the Curl man page to learn about all of the flag capabilities.