curl - macOS
Overview
curl is a powerful command-line tool used to transfer data to or from a server using various protocols such as HTTP, HTTPS, FTP, FTPS, SCP, SFTP, and more. Primarily, it is used to download files or web pages from the internet. Its versatility makes it an essential tool for testing and interacting with APIs, automating file downloads, and web scraping.
Syntax
The basic syntax of curl is:
curl [options] [URL...]
options: These are flags that modify the behavior ofcurl.URL: The URL to whichcurlmakes the request must be enclosed in quotation marks if it contains special characters.
Options/Flags
-o,--output <file>: Write output to<file>instead of stdout.-O,--remote-name: Save the download file with the remote filename.-L,--location: Follow redirects.-H,--header <header>: Pass custom header(s) to the server.-d,--data <data>: Sends the specified data in a POST request to the HTTP server.--data-urlencode <data>: URL-encodes the given data and appends it to the URL.-u,--user <user:password>: Pass user and password for server authentication.-I,--head: Fetch the headers only.-X,--request <command>: Specify the request command to use.-s,--silent: Silent or quiet mode. Don’t show progress meter or error messages.-v,--verbose: Make the operation more talkative.--limit-rate <rate>: Limit the data transfer rate specified in bytes per second.-A,--user-agent <agent string>: Send User-Agent<agent string>to the server.
Examples
- 
Downloading a File
curl -O http://example.com/file.tar.gz - 
Using Custom Headers
curl -H "X-My-Header: 123" http://example.com - 
POST Data
curl -d "login=username&password=secret" https://example.com/login - 
Save Output to File
curl -o mypage.html http://example.com - 
Verbose Mode
curl -v https://example.com 
Common Issues
- Error: Could not resolve host: Ensure the URL is correct or check your internet connection.
 - Permission Denied: When writing to a location where you don’t have write permission. Use 
sudoor change the target directory. - SSL Certificate Problem: Use 
-kor--insecureto ignore certificate validation, but only on trusted sites. 
Integration
curl can be combined with other tools like jq for processing JSON data:
curl -s https://api.example.com/data | jq '.'
Or use it in scripts to check connectivity:
if curl -s --head --request GET https://example.com | grep "200 OK" > /dev/null; then
   echo "Website is UP."
else
   echo "Website is DOWN."
fi
Related Commands
- wget: Another command-line tool to download files from the internet.
 - httpie: A modern, user-friendly command-line HTTP client.
 
For further reading and more detailed information, refer to the official curl documentation.