Bird
Raised Fist0
Bash Scriptingscripting~5 mins

Process substitution (<() and >()) in Bash Scripting - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is process substitution in bash?
Process substitution lets you use the output or input of a command as if it were a file. It uses <() for input and >() for output.
Click to reveal answer
beginner
How does <() work in bash?
The <() syntax runs a command and provides its output as a temporary file name. You can use this file name as input to another command.
Click to reveal answer
intermediate
What does >() do in bash scripting?
The >() syntax runs a command and provides a temporary file name that acts like a writable file. Writing to this file sends data to the command's input.
Click to reveal answer
beginner
Example: How to compare the output of two commands using diff and process substitution?
Use: diff <(command1) <(command2). This compares the outputs of command1 and command2 without creating temporary files manually.
Click to reveal answer
intermediate
Why use process substitution instead of temporary files?
Process substitution is cleaner and faster. It avoids creating and deleting temporary files manually and works well in pipelines.
Click to reveal answer
What does <(command) do in bash?
ARedirects command output to a file
BRuns command and waits for user input
CRuns command and provides its output as a file name
DCreates a new file with command's name
Which symbol is used for output process substitution?
A<()
B>>
C|
D>()
How can you compare outputs of two commands without temporary files?
Adiff <(command1) <(command2)
Bdiff file1 file2
Ccat command1 command2
Ddiff command1 command2
Process substitution is useful because it:
ARequires manual file cleanup
BAvoids temporary files and simplifies pipelines
CCreates permanent files
DSlows down scripts
Which of these is NOT true about process substitution?
AIt works only on Windows
BIt creates named pipes or /dev/fd files
CIt can be used with commands expecting file names
DIt helps redirect command input or output
Explain how process substitution works in bash and give an example using <() or >().
Think about how commands can be treated like files.
You got /3 concepts.
    Describe the benefits of using process substitution compared to temporary files in scripting.
    Consider what makes scripting easier and cleaner.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the process substitution syntax <() do in bash scripting?
      easy
      A. It runs a command and waits for user input.
      B. It redirects the output of a command to a file on disk.
      C. It creates a temporary file with command output saved.
      D. It runs a command and provides its output as a file input to another command.

      Solution

      1. Step 1: Understand process substitution <()

        This syntax runs a command and makes its output appear as a file that another command can read.
      2. Step 2: Compare with other options

        Unlike redirecting output to a disk file, <() creates a temporary file descriptor for input.
      3. Final Answer:

        It runs a command and provides its output as a file input to another command. -> Option D
      4. Quick Check:

        Process substitution <() = command output as input file [OK]
      Hint: Remember: <() gives command output as a file input [OK]
      Common Mistakes:
      • Confusing <() with output redirection >
      • Thinking it creates a real disk file
      • Assuming it waits for user input
      2. Which of the following is the correct syntax to use process substitution to compare two files file1 and file2 using diff?
      easy
      A. diff <(cat file1) <(cat file2)
      B. diff >(cat file1) >(cat file2)
      C. diff <(file1) <(file2)
      D. diff file1 >() file2

      Solution

      1. Step 1: Identify correct process substitution usage

        Using <() runs commands and provides their output as files to diff.
      2. Step 2: Check each option

        diff <(cat file1) <(cat file2) correctly uses cat file1 and cat file2 inside <(). Options B, C, and D misuse syntax or operators.
      3. Final Answer:

        diff <(cat file1) <(cat file2) -> Option A
      4. Quick Check:

        Correct syntax for process substitution in diff = diff <(cat file1) <(cat file2) [OK]
      Hint: Use <() with commands producing input, not >() [OK]
      Common Mistakes:
      • Using >() instead of <() for input
      • Trying to put filenames directly inside <()
      • Mixing redirection symbols incorrectly
      3. What will be the output of the following bash command?
      comm -12 <(sort fileA.txt) <(sort fileB.txt)

      Assuming fileA.txt contains:
      apple banana carrot
      and fileB.txt contains:
      banana carrot date
      medium
      A. apple banana carrot date
      B. banana carrot
      C. apple
      D. banana carrot date apple

      Solution

      1. Step 1: Understand comm -12 with process substitution

        The command compares sorted files and outputs lines common to both (options 1 and 2).
      2. Step 2: Sort and compare file contents

        Sorted fileA.txt: apple, banana, carrot
        Sorted fileB.txt: banana, carrot, date
        Common lines: banana, carrot
      3. Final Answer:

        banana carrot -> Option B
      4. Quick Check:

        Common sorted lines = banana and carrot [OK]
      Hint: comm -12 shows common lines from sorted inputs [OK]
      Common Mistakes:
      • Not sorting files before comm
      • Expecting all lines combined
      • Confusing comm options
      4. Identify the error in this script snippet using process substitution:
      grep 'error' >(sort > errors_sorted.txt)
      medium
      A. Using >() where <() is needed for input
      B. Missing quotes around 'error'
      C. Cannot redirect output inside >()
      D. sort command should be outside process substitution

      Solution

      1. Step 1: Analyze the use of >() in the command

        The syntax >() creates a writable file descriptor for output redirection, but here grep expects a file input, not output.
      2. Step 2: Determine correct substitution type

        To provide input from a command, <() should be used. Using >() here is incorrect.
      3. Final Answer:

        Using >() where <() is needed for input -> Option A
      4. Quick Check:

        Input needs <() not >() [OK]
      Hint: Use <() for input, >() for output redirection [OK]
      Common Mistakes:
      • Confusing input and output process substitution
      • Assuming >() can be nested inside commands
      • Ignoring command expectations for input/output
      5. You want to run a command that reads from a file and writes output to another command simultaneously, without creating temporary files on disk. Which process substitution usage correctly achieves this?
      command1 <(producer) >(consumer)

      What does this setup do?
      hard
      A. Runs command1 output to producer and input from consumer.
      B. Creates two temporary files for producer and consumer.
      C. Runs producer and feeds its output as input to command1, then sends command1 output to consumer.
      D. Runs consumer first, then producer.

      Solution

      1. Step 1: Understand <() and >() roles

        <() provides command output as input file, >() provides a writable file for output redirection.
      2. Step 2: Analyze the command flow

        producer output feeds command1 input via <(), and command1 output is sent to consumer via >().
      3. Final Answer:

        Runs producer and feeds its output as input to command1, then sends command1 output to consumer. -> Option C
      4. Quick Check:

        <() input, >() output redirection [OK]
      Hint: Use <() for input, >() for output to chain commands [OK]
      Common Mistakes:
      • Mixing input and output substitutions
      • Assuming temporary disk files are created
      • Confusing command execution order
      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