Interview › Scripting (Bash, Groovy)
What does 2>&1 mean, and how do you redirect both stdout and stderr? [Intermediate]
Answer
2>&1 means redirect stderr, file descriptor 2, to wherever stdout, file descriptor 1, currently points. To redirect both stdout and stderr to the same file, use command >file 2>&1 or command &>file in Bash.
Technical explanation
Redirection order matters because 2>&1 copies the current destination of stdout at that point.
command >file 2>&1 sends both streams to file; command 2>&1 >file sends stderr to the original stdout and only stdout to file.
For pipelines, use pipefail if you need upstream failures to affect the pipeline status.
Hands-on example
# Correct: both stdout and stderr to deploy.log
./deploy.sh > deploy.log 2>&1
# Bash shorthand:
./deploy.sh &> deploy.log
# Append both:
./deploy.sh >> deploy.log 2>&1
Check how well your resume matches the role with our free resume checker— match score, ATS check, and the skills you're missing.
More Scripting (Bash, Groovy) interview questions
- What is the purpose of the shebang line, and what does #!/bin/bash do? [Basic]
- What is the difference between sh and bash? [Basic]
- How do you make a script executable and run it? [Basic]
- What is the difference between running a script with ./script.sh, bash script.sh, and source script.sh? [Basic]
- What does sourcing a script do differently from executing it? [Basic]
- How do you declare a variable in Bash, and why are spaces around = not allowed? [Basic]
- What is the difference between $var and ${var}? [Basic]
- What is the difference between single quotes and double quotes in Bash? [Basic]