📖 Scenario: You are working on a Linux system and want to manage error messages from commands. Sometimes commands show errors on the screen, but you want to save these errors to a file for later review.
🎯 Goal: Learn how to redirect error messages (stderr) from commands into files using 2> and 2>> operators.
📋 What You'll Learn
Create a command that produces an error message
Redirect the error message to a file using 2>
Use a variable to hold the error file name
Append error messages to the file using 2>>
Display the contents of the error file
💡 Why This Matters
🌍 Real World
System administrators and developers often need to capture error messages from commands to troubleshoot problems later without cluttering the screen.
💼 Career
Knowing how to redirect error messages is essential for writing scripts and managing Linux systems efficiently.
Progress0 / 4 steps
1
Create a command that produces an error message
Write a command that tries to list a non-existent directory called missing_dir to produce an error message.
Linux CLI
Hint
Use the ls command with a folder name that does not exist.
2
Redirect the error message to a file using 2>
Create a variable called error_file and set it to errors.txt. Then run the command ls missing_dir and redirect its error output to the file stored in error_file using 2>.
Linux CLI
Hint
Use error_file=errors.txt to set the variable. Use 2>$error_file to redirect stderr.
3
Append error messages to the file using 2>>
Run the command cat missing_file.txt and append its error output to the file stored in error_file using 2>>.
Linux CLI
Hint
Use 2>>$error_file to append stderr to the file.
4
Display the contents of the error file
Use the cat command to display the contents of the file stored in error_file.
Linux CLI
Hint
Use cat $error_file to show the saved error messages.
Practice
(1/5)
1. What does the command ls nonexistingfile 2> error.log do in Linux?
easy
A. Sends the error message to the file error.log, replacing its content.
B. Appends the error message to the file error.log.
C. Sends the normal output to error.log.
D. Displays the error message on the screen only.
Solution
Step 1: Understand 2> redirection
The operator 2> redirects standard error (stderr) to a file, replacing its content.
Step 2: Analyze the command behavior
The command tries to list a non-existing file, so it produces an error message sent to error.log, overwriting previous content.
Final Answer:
Sends the error message to the file error.log, replacing its content. -> Option A
2. Which of the following is the correct syntax to append error messages to a file named errors.txt?
easy
A. command 2>> errors.txt
B. command 2> errors.txt
C. command >2 errors.txt
D. command >>2 errors.txt
Solution
Step 1: Identify append operator for stderr
The operator 2>> appends standard error to a file without overwriting it.
Step 2: Match syntax with options
command 2>> errors.txt uses 2>> correctly to append errors to errors.txt.
Final Answer:
command 2>> errors.txt -> Option A
Quick Check:
Append errors with 2>> [OK]
Hint: Use 2>> to add errors, not overwrite [OK]
Common Mistakes:
Using 2> instead of 2>> to append
Swapping > and 2 in syntax
Using >>2 which is invalid
3. What will be the content of log.txt after running this command twice?
grep 'pattern' file.txt 2>> log.txt
Assuming file.txt does not exist.
medium
A. log.txt will be empty because errors go to screen.
B. log.txt will contain only one error message, overwritten by second run.
C. log.txt will contain two copies of the error message appended.
D. log.txt will contain normal grep output twice.
Solution
Step 1: Understand 2>> appends stderr
The operator 2>> appends error messages to the file without deleting previous content.
Step 2: Analyze repeated command effect
Since file.txt is missing, grep outputs an error each time, appending twice to log.txt.
Final Answer:
log.txt will contain two copies of the error message appended. -> Option C
Quick Check:
2>> appends errors, so two runs add two messages [OK]
Hint: 2>> adds errors, so repeated runs append messages [OK]
Common Mistakes:
Thinking 2>> overwrites file
Assuming errors print on screen
Confusing normal output with error output
4. You run cat missingfile 2> errors.log but errors.log remains empty. What is the likely mistake?
medium
A. You redirected stdout instead of stderr.
B. The command ran successfully with no errors.
C. You used 2>> instead of 2>.
D. The file missingfile actually exists.
Solution
Step 1: Check if error occurs
If missingfile exists, cat produces no error, so nothing is sent to errors.log.
Step 2: Understand empty error file
Since no error happened, the error file remains empty despite redirection.
Final Answer:
The command ran successfully with no errors. -> Option B
Quick Check:
No error means empty error file [OK]
Hint: Empty error file means no error occurred [OK]
Common Mistakes:
Assuming 2>>> is valid syntax
Confusing stdout and stderr redirection
Ignoring that file might exist
5. You want to run a script that logs all error messages to error.log without losing previous errors, but normal output should show on screen. Which command correctly does this?
hard
A. ./script.sh >> error.log 2>> error.log
B. ./script.sh 2> error.log
C. ./script.sh > error.log 2>&1
D. ./script.sh 2>> error.log
Solution
Step 1: Identify error logging without overwrite
To keep previous errors, use 2>> to append stderr to error.log.
Step 2: Ensure normal output shows on screen
Redirecting only stderr leaves stdout on screen, so ./script.sh 2>> error.log fits requirements.
Final Answer:
./script.sh 2>> error.log -> Option D
Quick Check:
Append errors with 2>>; stdout stays on screen [OK]
Hint: Use 2>> for errors, no stdout redirection to keep screen output [OK]
Common Mistakes:
Using 2> which overwrites error log
Redirecting stdout to file losing screen output
Combining stdout and stderr incorrectly
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.