5

I'm familiar with creating 'temporary files' for command input in bash, e.g.

cat file_1 <(echo hello) file_2

I want to read more about the subject, but I don't know the name of the <( ) operator. I suspect it's a kind of IO redirect.

Is there a name for this notation/operator?

Armand
  • 23,463
  • 20
  • 90
  • 119

2 Answers2

13

This is called process substitution:

Process substitution is a form of redirection where the input or output of a process (some sequence of commands) appear as a temporary file.

Also from Bash Reference Manual → 3.5.6 Process Substitution:

Process substitution allows a process’s input or output to be referred to using a filename. It takes the form of

<(list)

or

>(list)

The process list is run asynchronously, and its input or output appears as a filename. This filename is passed as an argument to the current command as the result of the expansion. If the >(list) form is used, writing to the file will provide input for list. If the <(list) form is used, the file passed as an argument should be read to obtain the output of list. Note that no space may appear between the < or > and the left parenthesis, otherwise the construct would be interpreted as a redirection. Process substitution is supported on systems that support named pipes (FIFOs) or the /dev/fd method of naming open files.

When available, process substitution is performed simultaneously with parameter and variable expansion, command substitution, and arithmetic expansion.

Community
  • 1
  • 1
fedorqui
  • 275,237
  • 103
  • 548
  • 598
1

Also known as 'anonymous FIFO'.

Dandorid
  • 205
  • 2
  • 12
  • 1
    This does not provide an answer to the question. To critique or request clarification from an author, leave a comment below their post. - [From Review](/review/low-quality-posts/11898694) – Toby Speight Apr 05 '16 at 11:44
  • 3
    @TobySpeight It actually does provide an answer to the question. – Nahuel Ianni Apr 05 '16 at 12:45