📖 Scenario: You want to check the status and content of a website from your command line. Using curl helps you send HTTP requests easily.
🎯 Goal: Learn how to use curl to send a simple HTTP GET request, add options to customize the request, and display the response.
📋 What You'll Learn
Use curl to send HTTP GET requests
Add options to curl commands
Display the HTTP response content in the terminal
💡 Why This Matters
🌍 Real World
Checking website status and content quickly from the command line helps troubleshoot network or server issues.
💼 Career
System administrators, developers, and testers often use <code>curl</code> to automate web requests and monitor services.
Progress0 / 4 steps
1
Send a basic HTTP GET request
Type the command curl http://example.com to send a simple HTTP GET request to http://example.com.
Linux CLI
Hint
Use curl followed by the URL to get the webpage content.
2
Add the -I option to fetch headers only
Add the -I option to the curl command to fetch only the HTTP headers from http://example.com. Type curl -I http://example.com.
Linux CLI
Hint
The -I option tells curl to fetch only the HTTP headers.
3
Use --silent to hide progress and errors
Add the --silent option to the curl command with -I to hide progress and error messages. Type curl -I --silent http://example.com.
Linux CLI
Hint
The --silent option makes curl quiet, showing only the output.
4
Display the HTTP response body with status code
Use curl -w "%{http_code}\n" -s http://example.com to display the HTTP response body silently and then print the HTTP status code on a new line.
Linux CLI
Hint
The -w "%{http_code}\n" option prints the HTTP status code after the response body. The -s option hides progress.
Practice
(1/5)
1. What does the curl command primarily do in Linux?
easy
A. Monitor system processes
B. Send HTTP requests to websites
C. Manage file permissions
D. Compile source code
Solution
Step 1: Understand the purpose of curl
The curl command is designed to send HTTP requests and interact with web servers.
Step 2: Compare with other options
Compiling code, managing permissions, and monitoring processes are unrelated to curl's function.
Final Answer:
Send HTTP requests to websites -> Option B
Quick Check:
curl = HTTP requests [OK]
Hint: curl is for web requests, not system tasks [OK]
Common Mistakes:
Confusing curl with system commands like chmod or ps
Thinking curl compiles code
Assuming curl manages files locally
2. Which of the following is the correct syntax to fetch the content of http://example.com using curl?
easy
A. curl http://example.com
B. curl --head http://example.com
C. curl -x http://example.com
D. curl -d http://example.com
Solution
Step 1: Identify basic curl usage
To fetch a webpage, simply use curl URL. No extra flags are needed for a simple GET request.
Step 2: Analyze other options
-x is for proxy, --head fetches headers only, -d sends data (POST), so they are incorrect for simple fetch.
Final Answer:
curl http://example.com -> Option A
Quick Check:
Basic fetch = curl URL [OK]
Hint: Use curl followed by URL to fetch page [OK]
Common Mistakes:
Using -x which is for proxy
Using -d which sends data instead of fetching
Using --head which fetches headers only
3. What will be the output of this command?
curl -I https://example.com
medium
A. An error because -I is invalid
B. The full HTML content of the page
C. Only the HTTP headers of the response
D. The page content saved to a file
Solution
Step 1: Understand the -I option in curl
The -I flag tells curl to fetch only the HTTP headers, not the full content.
Step 2: Check other options
The full HTML content of the page is full content, which -I does not do. An error because -I is invalid is wrong because -I is valid. The page content saved to a file requires -o flag, not present here.
Final Answer:
Only the HTTP headers of the response -> Option C
Quick Check:
-I = headers only [OK]
Hint: Remember -I fetches headers only [OK]
Common Mistakes:
Thinking -I fetches full page
Confusing -I with -o for output file
Assuming -I is invalid flag
4. You want to send JSON data {"name":"John"} to http://api.example.com/users using curl. Which command has an error?
medium
A. curl -d '{name:John}' -X POST -H "Content-Type: application/json" http://api.example.com/users
B. curl -X POST -H "Content-Type: application/json" -d '{"name":"John"}' http://api.example.com/users
C. curl -d '{"name":"John"}' http://api.example.com/users -H "Content-Type: application/json" -X POST
D. curl -X POST -d '{"name":"John"}' -H "Content-Type: application/json" http://api.example.com/users
Solution
Step 1: Check JSON data format
curl -d '{name:John}' -X POST -H "Content-Type: application/json" http://api.example.com/users uses '{name:John}' which misses double quotes around keys and values, making it invalid JSON. Options A, C, D use correct JSON '{"name":"John"}'.
Step 2: Confirm curl flags order
Order of flags does not matter in curl, so A, C, D are valid. Only data format in B is wrong.
Final Answer:
curl -d '{name:John}' -X POST -H "Content-Type: application/json" http://api.example.com/users -> Option A
Quick Check:
JSON must have quotes [OK]
Hint: JSON keys and values need quotes [OK]
Common Mistakes:
Omitting quotes in JSON data
Thinking flag order matters in curl
Using wrong content-type header
5. You want to download a file from http://example.com/file.zip and save it as myfile.zip. Which curl command does this correctly?
hard
A. curl --save myfile.zip http://example.com/file.zip
B. curl -O http://example.com/file.zip > myfile.zip
C. curl -O myfile.zip http://example.com/file.zip
D. curl -o myfile.zip http://example.com/file.zip
Solution
Step 1: Understand curl file saving options
-o filename saves the download to the specified filename. -O saves with original name from URL.
Step 2: Analyze each option
B: curl -O http://example.com/file.zip > myfile.zip saves to 'file.zip' via -O and redirects empty stdout to myfile.zip. C: curl -O myfile.zip http://example.com/file.zip uses -O incorrectly, treating myfile.zip as URL. D: uses invalid flag --save.
Final Answer:
curl -o myfile.zip http://example.com/file.zip -> Option D
Quick Check:
-o sets output filename [OK]
Hint: Use -o to name downloaded file [OK]
Common Mistakes:
Using > redirection for binary files
Confusing -O and -o flags
Using non-existent flags like --save
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.