O shell dos sistemas operacionais do Unix possui um mecanismo chamado tubo , pipeline ou tubo ( / paɪp / ). Este mecanismo possibilita encadear processos de forma que a saída de um processo ( stdout ) alimente diretamente a entrada ( stdin ) do próximo. Cada conexão é estabelecida por um tubo anônimo . Os programas de filtro são freqüentemente usados nesta configuração. Douglas McIlroy cunhou esse conceito para shells Unix e o nome em inglês deriva da analogia com um pipeline físico.
O símbolo usado para criar tubos em shells Unix é a barra vertical | , comumente chamado de tubo ou tubo por extensão.
Por exemplo : programme1 | programme2
O programa program1 é executado pelo sistema que envia os resultados para program2 que por sua vez devolve os resultados para a saída padrão do sistema.
O pipe é amplamente utilizado no Unix, por exemplo, para associar vários comandos cujos processos estão vinculados.
Por exemplo, o comando:
cut -d" " -f1 < access.log | sort | uniq -c | sort -rn | lessPermite que você recupere e exiba os endereços IP dos clientes que acessaram com mais frequência um servidor da web Apache .
Em sistemas operacionais monotâches como o MS-DOS , o processo encadeado deve ser executado sequencialmente, ou seja, um após o outro. A saída de cada processo é salva em um arquivo temporário, que é lido pelo próximo processo. Portanto, por um lado o tamanho necessário no disco para realizar esses comandos pode ser muito grande e, portanto, a execução muito lenta, por outro lado a aquisição permanente é impossível uma vez que nunca retornará "a mão" e finalmente esses comandos não podem processar reais Aquisições de dados em tempo, uma vez que tudo deve ser gravado nos discos antes que o segundo processamento seja concluído. A sintaxe, no entanto, é idêntica à dos canais de shell do UNIX. Portanto, falamos de pseudo-tubos.
O processamento do "dir | destino | mais "pelo interpretador de comandos permite exibir por página a lista dos arquivos do diretório de forma ordenada. Para fazer isso, o sistema executa:
O Windows PowerShell , o shell equivalente para os sistemas operacionais multitarefa da Microsoft , também implementa esse tipo de mecanismo. Mas, ao contrário dos pipes do UNIX, que permitem que você manipule um fluxo de dados brutos na forma de bytes ou bits, os pipes do PowerShell permitem que você manipule objetos .NET , um método que, implicitamente pelo interpretador de comandos, verifica a natureza do fluxo.