Bird
Raised Fist0
Bash Scriptingscripting~5 mins

Writing to files (echo, printf) in Bash Scripting - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Writing to files (echo, printf)
O(n)
Understanding Time Complexity

When writing data to files using bash commands like echo or printf, it is important to understand how the time taken grows as the amount of data increases.

We want to know how the execution time changes when writing more lines or bigger content to a file.

Scenario Under Consideration

Analyze the time complexity of the following code snippet.

for i in $(seq 1 $n); do
  echo "Line $i" >> output.txt
  printf "Number: %d\n" "$i" >> output.txt
done

This script writes two lines to a file for each number from 1 to n.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: The for loop runs n times.
  • How many times: Each iteration writes two lines to the file using echo and printf.
How Execution Grows With Input

As n increases, the number of write operations grows directly with it.

Input Size (n)Approx. Operations
1020 writes
100200 writes
10002000 writes

Pattern observation: The total writes increase linearly as n grows.

Final Time Complexity

Time Complexity: O(n)

This means the time to write grows in direct proportion to the number of lines you want to write.

Common Mistake

[X] Wrong: "Writing multiple lines inside a loop is constant time because each write is fast."

[OK] Correct: Each write takes time, so more lines mean more total time. The time adds up linearly, not stays the same.

Interview Connect

Understanding how writing to files scales helps you reason about script performance and resource use in real tasks.

Self-Check

"What if we buffered all lines in a variable and wrote once at the end? How would the time complexity change?"

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