Bird
Raised Fist0
Linux CLIscripting~20 mins

curl for HTTP requests in Linux CLI - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Curl Command Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
1:30remaining
What is the output of this curl command?
You run this command in a terminal:
curl -s -o /dev/null -w "%{http_code}" https://httpbin.org/status/404

What will be the output?
Linux CLI
curl -s -o /dev/null -w "%{http_code}" https://httpbin.org/status/404
ANo output
B404
CError: Not Found
D200
Attempts:
2 left
💡 Hint
The -w option prints the HTTP status code. The URL returns a 404 status.
💻 Command Output
intermediate
1:30remaining
What does this curl command output?
Consider this command:
curl -I https://example.com

What kind of output will it produce?
Linux CLI
curl -I https://example.com
AOnly the HTTP status code
BFull HTML content of the page
COnly HTTP headers of the response
DAn error message
Attempts:
2 left
💡 Hint
The -I option fetches headers only.
📝 Syntax
advanced
2:00remaining
Which curl command correctly sends JSON data with POST?
You want to send JSON data '{"name":"Alice"}' to https://api.example.com/users using POST. Which command is correct?
Acurl -X POST -H "Content-Type: application/json" https://api.example.com/users
Bcurl -X POST -d '{"name":"Alice"}' -H "Content-Type: text/plain" https://api.example.com/users
Ccurl -X GET -H "Content-Type: application/json" -d '{"name":"Alice"}' https://api.example.com/users
Dcurl -X POST -H "Content-Type: application/json" -d '{"name":"Alice"}' https://api.example.com/users
Attempts:
2 left
💡 Hint
Use POST method, set content type to application/json, and provide data with -d.
🔧 Debug
advanced
2:00remaining
Why does this curl command fail to send data?
This command is run:
curl -X POST https://api.example.com/data -d name=Bob&age=25

But the server reports only partial data received. Why?
Linux CLI
curl -X POST https://api.example.com/data -d name=Bob&age=25
AThe -d option needs quotes around the data to be sent correctly
BPOST method is not supported by curl
CThe -X POST option must come after the URL
DThe URL is missing a trailing slash
Attempts:
2 left
💡 Hint
Shell may split unquoted data into multiple arguments.
🚀 Application
expert
2:30remaining
How to save only HTTP response headers to a file using curl?
You want to save only the HTTP headers from https://example.com to a file named headers.txt, without saving the body. Which command does this?
Acurl -s -D headers.txt -o /dev/null https://example.com
Bcurl -s -I https://example.com > headers.txt
Ccurl -s -o headers.txt -I https://example.com
Dcurl -s -o headers.txt https://example.com
Attempts:
2 left
💡 Hint
Use -D to save headers, -o /dev/null to discard body.

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

  1. Step 1: Understand the purpose of curl

    The curl command is designed to send HTTP requests and interact with web servers.
  2. Step 2: Compare with other options

    Compiling code, managing permissions, and monitoring processes are unrelated to curl's function.
  3. Final Answer:

    Send HTTP requests to websites -> Option B
  4. 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

  1. Step 1: Identify basic curl usage

    To fetch a webpage, simply use curl URL. No extra flags are needed for a simple GET request.
  2. Step 2: Analyze other options

    -x is for proxy, --head fetches headers only, -d sends data (POST), so they are incorrect for simple fetch.
  3. Final Answer:

    curl http://example.com -> Option A
  4. 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

  1. Step 1: Understand the -I option in curl

    The -I flag tells curl to fetch only the HTTP headers, not the full content.
  2. 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.
  3. Final Answer:

    Only the HTTP headers of the response -> Option C
  4. 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

  1. 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"}'.
  2. 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.
  3. Final Answer:

    curl -d '{name:John}' -X POST -H "Content-Type: application/json" http://api.example.com/users -> Option A
  4. 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

  1. Step 1: Understand curl file saving options

    -o filename saves the download to the specified filename. -O saves with original name from URL.
  2. 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.
  3. Final Answer:

    curl -o myfile.zip http://example.com/file.zip -> Option D
  4. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard