Dois canais para um comando

9

Estou um pouco confuso com a seguinte sintaxe. Embora funcione, não entende porque funciona. Parece que há dois canais ligados ao comando diff. Mas não existe apenas um STDIN ?

Exemplos:

diff <(echo "foobar") <(echo "barbaz")
diff <(cat foo.txt) <(cat bar.txt)
    
por iblue 08.02.2012 / 15:21

1 resposta

13

Os canais são simplesmente vinculados a descritores de arquivos diferentes de 0 (stdin):

$ echo <(true)
/dev/fd/63
$ echo <(true) <(true)
/dev/fd/63 /dev/fd/62

Um processo pode ter mais de um descritor de arquivo aberto por vez, então não há problema.

    
por 08.02.2012 / 15:23

Tags