Encadeamentos ou pipelines Unix-like com exemplos

Encadeamentos ou pipelines são conjuntos de processos em sequência (conexões), de forma que a saída (stdout) de um processo é utilizada como entrada (stdin) do processo seguinte. Como um trem bala eles ajudam você a ganhar velocidade através de um número reduzido de paradas até atingir o seu objetivo.

Tipicamente, utiliza-se o caractere “|” (barra vertical) que, por esta razão, também é conhecido como “pipe” pelos usuários de sistemas Unix-like.

Cada conexão é implementada através de um pipe anônimo e frequentemente são utilizados filtros (ex: grep, sed, sort) nos dados transferidos entre os programas.

Exemplos:

1) Crie um arquivo com o nome “teste” com o seguinte conteúdo:
b
a
c
c

2) Execute o comando “sort < teste” para redirecionar o conteúdo do arquivo “teste” para o stdin do sort. O stdout exibido deve ser o seguinte:
a
b
c
c

3) Execute o comando “sort < teste | sort -u” para criar seu primeiro encadeamento ou pipeline. O stdout  exibido deve ser o seguinte:
a
b
c

4) Redirecione o stdout para o dispositivo nulo omitindo assim o stdout através do comando “sort < teste | sort -u > /dev/null”. O stdout não deve exibir nada.

5) Redirecione o stdout para sobrescrever o arquivo teste2 com o comando “sort < teste | sort -u > teste2 && cat teste2”. O stdout deve exibir o seguinte:
a
b
c

6) Redirecione o stdout para fazer o append no arquivo teste2 com o comando “sort < teste | sort -u >> teste2 && cat teste2”. O stdoud deve exibir o seguinte:
a
b
c
a
b
c

Fontes:

Adicionar aos favoritos o Link permanente.