pipes vs. redirecionamentos

20

Estou usando pipes e redirecionamentos há muito tempo e percebi que não sei exatamente como eles são diferentes. Eu só sei que se você quiser armazenar a saída em um arquivo, use>. Caso contrário, na maioria das vezes você apenas usa |. Alguém pode explicar a diferença entre pipes e redirecionamentos?

tony_sid
fonte

Respostas:

19

Os dois fazem a mesma coisa básica; eles redirecionam um descritor de arquivo do processo executado. A diferença está em como. Um canal conecta o stdout de um processo ao stdin de outro, enquanto o redirecionamento redireciona de / para um arquivo ( >de stdout para um arquivo, <de um arquivo para stdin).

Ignacio Vazquez-Abrams
fonte
1
A distinção meio que desfoca no Linux e em outros sistemas que possuem /dev/fd. Por exemplo, se você executar echo foo > >(somecommand), ele será expandido para echo foo > /dev/fd/3. Ainda é o redirecionamento, mas para um processo.
grawity