Bird
Raised Fist0
Bash Scriptingscripting~20 mins

Writing to files (echo, printf) in Bash Scripting - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
File Writer Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
What is the content of the file after running this script?
Consider the following bash script that writes to a file named output.txt. What will be the content of output.txt after running it?
Bash Scripting
echo "Hello World" > output.txt
printf "Line1\nLine2\n" >> output.txt
AHello World\nLine1\nLine2
BHello World\nLine1 Line2
CHello World
DLine1\nLine2
Attempts:
2 left
💡 Hint
Remember that > overwrites the file and >> appends to it.
💻 Command Output
intermediate
2:00remaining
What does this command write to the file?
What will be the exact content of data.txt after running this command?
Bash Scripting
printf "%s\n" "apple" "banana" "cherry" > data.txt
Aapple\nbanana\ncherry
Bapple\nbanana\ncherry\n
Capple\nbanana cherry
Dapple banana cherry
Attempts:
2 left
💡 Hint
Each %s\n prints the string followed by a newline.
📝 Syntax
advanced
2:00remaining
Which option correctly appends a line with a variable to a file?
You want to append the text "User: alice" to a file named log.txt, where the username is stored in a variable user. Which command is correct?
Bash Scripting
user=alice
Aprintf 'User: $user\n' >> log.txt
Becho 'User: $user' >> log.txt
Cprintf "User: $user\n" > log.txt
Decho "User: $user" >> log.txt
Attempts:
2 left
💡 Hint
Think about how single and double quotes handle variables.
🔧 Debug
advanced
2:00remaining
Why does this script not write the expected content to the file?
This script is intended to write "Count: 5" to count.txt. Why does it fail?
Bash Scripting
count=5
echo 'Count: $count' > count.txt
ABecause single quotes prevent variable expansion, so $count is written literally.
BBecause echo does not support variables.
CBecause the file count.txt is read-only.
DBecause the > operator only works with printf.
Attempts:
2 left
💡 Hint
Check how quotes affect variables inside echo.
🚀 Application
expert
3:00remaining
How to write a multi-line formatted report to a file using printf?
You want to create a report file report.txt with the following content exactly (including newlines):

Report Summary:
- Total: 10
- Passed: 8
- Failed: 2
End of Report

Which command correctly writes this using a single printf command?
Aecho -e "Report Summary:\n- Total: 10\n- Passed: 8\n- Failed: 2\nEnd of Report" > report.txt
Bprintf 'Report Summary:\n- Total: 10\n- Passed: 8\n- Failed: 2\nEnd of Report\n' > report.txt
Cprintf "Report Summary:\n- Total: %d\n- Passed: %d\n- Failed: %d\nEnd of Report\n" 10 8 2 > report.txt
D
printf "Report Summary:
- Total: 10
- Passed: 8
- Failed: 2
End of Report" > report.txt
Attempts:
2 left
💡 Hint
Use printf format specifiers and escape sequences carefully.

Practice

(1/5)
1. Which command in bash writes the text Hello World to a file named greeting.txt and adds a newline automatically?
easy
A. echo "Hello World" > greeting.txt
B. printf "Hello World" > greeting.txt
C. echo -n "Hello World" > greeting.txt
D. printf "Hello World\n" > greeting.txt

Solution

  1. Step 1: Understand echo behavior

    The echo command prints text and adds a newline by default.
  2. Step 2: Compare with printf

    printf requires explicit newline characters to add a newline.
  3. Final Answer:

    echo "Hello World" > greeting.txt -> Option A
  4. Quick Check:

    echo adds newline automatically = A [OK]
Hint: Use echo for quick writes with newline [OK]
Common Mistakes:
  • Using printf without \n misses newline
  • Using echo -n suppresses newline
  • Confusing > and >> operators
2. Which of the following is the correct syntax to append the line Log entry to a file log.txt using printf?
easy
A. printf "Log entry" >> log.txt
B. printf -n "Log entry" >> log.txt
C. printf "Log entry\n" >> log.txt
D. printf -e "Log entry" >> log.txt

Solution

  1. Step 1: Understand printf newline requirement

    printf does not add newline automatically; you must include \n explicitly.
  2. Step 2: Check append operator

    >> appends to the file without overwriting.
  3. Final Answer:

    printf "Log entry\n" >> log.txt -> Option C
  4. Quick Check:

    printf needs \n for newline + append with >> = C [OK]
Hint: Always add \n with printf to get a new line [OK]
Common Mistakes:
  • Forgetting \n causes no newline
  • Using > instead of >> overwrites file
  • Using invalid printf flags like -n or -e
3. What will be the content of file.txt after running this script?
echo "Line1" > file.txt
printf "Line2\n" >> file.txt
echo -n "Line3" >> file.txt
medium
A. Line1\nLine2Line3
B. Line1\nLine2\nLine3\n
C. Line1Line2Line3
D. Line1\nLine2\nLine3

Solution

  1. Step 1: Analyze echo "Line1" > file.txt

    This writes "Line1" plus newline to file.txt, overwriting existing content.
  2. Step 2: Analyze printf "Line2\n" >> file.txt

    This appends "Line2" plus newline to file.txt.
  3. Step 3: Analyze echo -n "Line3" >> file.txt

    This appends "Line3" without newline to file.txt.
  4. Final Answer:

    Line1\nLine2\nLine3 -> Option D
  5. Quick Check:

    echo adds newline, printf adds newline, echo -n no newline = D [OK]
Hint: Remember echo -n skips newline, printf needs explicit \n [OK]
Common Mistakes:
  • Assuming echo -n adds newline
  • Forgetting printf needs \n
  • Confusing overwrite (>) and append (>>)
4. The following script is intended to write two lines to output.txt but only writes one line. What is the error?
echo "First line" > output.txt
printf "Second line" > output.txt
medium
A. printf needs \n to add newline
B. Second command overwrites the file instead of appending
C. echo should use >> to append
D. Missing quotes around Second line

Solution

  1. Step 1: Check file redirection operators

    The first command uses > which creates or overwrites output.txt with "First line".
  2. Step 2: Check second command redirection

    The second command also uses > which overwrites output.txt, replacing previous content.
  3. Step 3: Correct approach

    To keep both lines, second command should use >> to append instead of overwrite.
  4. Final Answer:

    Second command overwrites the file instead of appending -> Option B
  5. Quick Check:

    Using > twice overwrites file = D [OK]
Hint: Use >> to append, > overwrites file [OK]
Common Mistakes:
  • Thinking \n missing causes no second line
  • Confusing > and >> operators
  • Assuming echo always appends
5. You want to create a file report.txt with exactly two lines:
"Summary:"
"All tests passed"
Which script snippet correctly creates this file with proper newlines and no extra blank lines?
hard
A. printf "Summary:\nAll tests passed\n" > report.txt
B. echo "Summary:" > report.txt && echo "All tests passed" > report.txt
C. echo -n "Summary:\nAll tests passed" > report.txt
D. printf "Summary:" > report.txt && printf "All tests passed" >> report.txt

Solution

  1. Step 1: Check echo commands in echo "Summary:" > report.txt && echo "All tests passed" > report.txt

    echo "Summary:" > report.txt && echo "All tests passed" > report.txt uses echo twice with > redirection, so the second command overwrites the first line.
  2. Step 2: Check printf commands in printf "Summary:\nAll tests passed\n" > report.txt

    printf "Summary:\nAll tests passed\n" > report.txt uses printf with explicit \n for newlines, creating exactly two lines with no extra blank lines.
  3. Step 3: Analyze Options C and D

    echo -n "Summary:\nAll tests passed" > report.txt uses echo -n which suppresses newlines and includes literal \n, so no actual new lines appear. printf "Summary:" > report.txt && printf "All tests passed" >> report.txt uses printf without \n, so lines run together.
  4. Final Answer:

    printf "Summary:\nAll tests passed\n" > report.txt -> Option A
  5. Quick Check:

    printf with explicit \n creates exact lines = B [OK]
Hint: Use printf with \n for precise multi-line output [OK]
Common Mistakes:
  • Using echo -n with \n prints literal \n
  • Forgetting \n in printf causes no new lines
  • Using > and >> inconsistently
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