Privacy Policy
© 2026 linux101.dev

curl Command

curl is a versatile command-line tool for transferring data with URLs. It supports a vast range of protocols, including HTTP, HTTPS, FTP, and more, making it a "Swiss Army knife" for interacting with web services and APIs.

Basic Usage

Fetch Content of a URL

curl https://example.com

Downloads the content from the given URL and displays it in the terminal.

Save Output to a File

curl -o page.html https://example.com

The -o flag saves the downloaded content to a specified file (page.html).

Download and Save with Original Filename

curl -O https://example.com/file.zip

The -O (uppercase) flag saves the file using the name from the URL (file.zip).

HTTP Interaction

Show HTTP Headers Only

curl -I https://example.com

The -I flag (HEAD request) fetches and displays only the HTTP headers, without downloading the body. Useful for checking status codes or content type.

Follow Redirects

curl -L http://google.com

The -L flag tells curl to follow any "Location" headers (redirects) until it reaches the final destination.

Send POST Request

curl -X POST -d "name=John&age=30" https://example.com/form

The -X POST specifies the request method, and -d provides the data to be sent in the request body.

Send JSON Data

curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com/data

A common use case for testing APIs. -H sets a custom header, and -d sends the JSON string.

Output

By default, curl writes response body to stdout, and progress/status messages to stderr.

-s (silent) turns off the progress meter, but -S can be combined to preserve errors on stderr:

curl -sS https://ifconfig.me > public_ip.txt

If you need to keep output separate, use shell redirection: stdout to file, stderr to err.log.

curl -sS https://ifconfig.me > public_ip.txt 2> err.log

This captures HTTP errors and curl diagnostics (network errors, protocol, SSL problems, etc.) in err.log, while the actual response body goes to public_ip.txt.

Checking Your Public IP Address

You can use curl to query external services that return your public IP address.

Get Public IPv4

curl ifconfig.me

Retrieves and displays your public IPv4 address from the ifconfig.me service. Other similar services include icanhazip.com.

Get Public IPv6

curl -6 ifconfig.me

Forces curl to use IPv6 to retrieve and display your public IPv6 address (if available).