Bird
Raised Fist0
Bash Scriptingscripting~5 mins

File descriptors and redirection in Bash Scripting - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a file descriptor in bash scripting?
A file descriptor is a number that represents an open file or input/output resource in bash. Common ones are 0 for standard input, 1 for standard output, and 2 for standard error.
Click to reveal answer
beginner
How do you redirect standard output to a file in bash?
Use the > symbol followed by the filename. For example, echo "Hello" > file.txt sends the output to file.txt instead of the screen.
Click to reveal answer
intermediate
What does the command 2>&1 do in bash?
It redirects standard error (file descriptor 2) to the same place as standard output (file descriptor 1). This way, both outputs go to the same destination.
Click to reveal answer
beginner
Explain the difference between > and >> in bash redirection.
> overwrites the file with new output, while >> appends the output to the end of the file without deleting existing content.
Click to reveal answer
intermediate
How can you redirect only standard error to a file, leaving standard output unchanged?
Use 2> filename. For example, command 2> error.log sends error messages to error.log but shows normal output on the screen.
Click to reveal answer
Which file descriptor number represents standard input in bash?
A0
B1
C2
D3
What does the command ls > files.txt do?
AAppends the list of files to files.txt
BSends the list of files to the screen
CSends the list of files to the file files.txt
DDeletes files.txt
How do you append output to a file instead of overwriting it?
A>
B<
C2>
D>>
What does command 2>&1 do?
ARedirects standard output to standard error
BRedirects standard error to standard output
CRedirects both to a file
DRuns command twice
How to redirect only error messages to a file named error.log?
Acommand 2> error.log
Bcommand >> error.log
Ccommand > error.log
Dcommand 1> error.log
Describe what file descriptors 0, 1, and 2 represent in bash and how you can redirect each.
Think about where data comes from and goes to in commands.
You got /6 concepts.
    Explain how to combine standard output and standard error into one file using redirection.
    Remember the order matters in redirection.
    You got /3 concepts.

      Practice

      (1/5)
      1. Which file descriptor number represents the standard error stream in bash?
      easy
      A. 3
      B. 1
      C. 2
      D. 0

      Solution

      1. Step 1: Recall standard file descriptors

        Standard input is 0, standard output is 1, and standard error is 2.
      2. Step 2: Identify the error stream descriptor

        The error stream is always file descriptor 2 in bash.
      3. Final Answer:

        2 -> Option C
      4. Quick Check:

        Standard error = 2 [OK]
      Hint: Remember: 0=input, 1=output, 2=error [OK]
      Common Mistakes:
      • Confusing standard output (1) with error (2)
      • Thinking input (0) is error
      • Using non-standard descriptor numbers
      2. Which of the following is the correct syntax to redirect standard output to a file named output.txt in bash?
      easy
      A. command >> output.txt 2>&1
      B. command < output.txt
      C. command 2> output.txt
      D. command > output.txt

      Solution

      1. Step 1: Understand output redirection syntax

        Using > redirects standard output (file descriptor 1) to a file, overwriting it.
      2. Step 2: Match syntax to redirect output only

        command > output.txt uses > correctly to redirect output to output.txt.
      3. Final Answer:

        command > output.txt -> Option D
      4. Quick Check:

        Output redirection uses > [OK]
      Hint: Use > for output, < for input redirection [OK]
      Common Mistakes:
      • Using < instead of > for output
      • Redirecting error (2>) instead of output
      • Appending (>>) when overwrite is needed
      3. What will be the output of the following command if file.txt does not exist?

      cat file.txt > output.txt 2>&1
      medium
      A. Redirects both output and error messages to output.txt
      B. Creates an empty output.txt file with no error message
      C. Outputs the error message to the terminal and creates output.txt
      D. Throws a syntax error and does nothing

      Solution

      1. Step 1: Understand redirection 2>&1

        This redirects standard error (2) to the same place as standard output (1).
      2. Step 2: Analyze command behavior when file missing

        cat tries to read file.txt, fails, and sends error to stderr, which is redirected to output.txt along with stdout.
      3. Final Answer:

        Redirects both output and error messages to output.txt -> Option A
      4. Quick Check:

        2>&1 merges error into output [OK]
      Hint: 2>&1 sends errors to the same place as output [OK]
      Common Mistakes:
      • Thinking error shows on terminal
      • Assuming output.txt stays empty
      • Confusing 2>&1 with separate redirections
      4. Identify the error in this command that attempts to redirect only standard error to error.log:

      ls -l > error.log 2>
      medium
      A. Output redirection > should be 1>
      B. Missing filename after 2> for error redirection
      C. Should use 2>&1 instead of 2>
      D. Command syntax is correct

      Solution

      1. Step 1: Check error redirection syntax

        Redirection 2> must be followed by a filename to redirect standard error.
      2. Step 2: Identify missing filename

        The command ends with 2> but no file is specified, causing a syntax error.
      3. Final Answer:

        Missing filename after 2> for error redirection -> Option B
      4. Quick Check:

        2> needs a target file [OK]
      Hint: Always specify a file after 2> for error redirection [OK]
      Common Mistakes:
      • Leaving out filename after 2>
      • Confusing 2> with 2>&1
      • Thinking > needs to be 1>
      5. You want to run a script that outputs normal messages to output.log and error messages to error.log. Which command correctly achieves this?
      hard
      A. ./script.sh > output.log 2> error.log
      B. ./script.sh 2>&1 > output.log error.log
      C. ./script.sh > output.log 2>&1 error.log
      D. ./script.sh > output.log &> error.log

      Solution

      1. Step 1: Understand separate redirection for output and error

        To send stdout and stderr to different files, use > for stdout and 2> for stderr separately.
      2. Step 2: Analyze each option

        ./script.sh > output.log 2> error.log correctly redirects stdout to output.log and stderr to error.log. Others mix or misuse redirection syntax.
      3. Final Answer:

        ./script.sh > output.log 2> error.log -> Option A
      4. Quick Check:

        Separate > and 2> for output and error [OK]
      Hint: Use > for output, 2> for errors to separate files [OK]
      Common Mistakes:
      • Using &> redirects both to one file
      • Mixing order of redirections incorrectly
      • Omitting file names after redirection operators
      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