Quando usar pipes e quando redirecionar?

2

Embora isso seja uma coisa básica, mas eu ainda me pergunto. Considere estes dois exemplos.

Caso 1:

[root@dhcppc0 practice]# cat file1 > wc -l
cat: invalid option -- l
Try 'cat --help' for more information.

Caso 2:

[root@dhcppc0 practice]# cat file1 | wc -l
7

Eu me pergunto, por que o redirecionamento não funciona no primeiro caso? quando usar o redirecionamento e quando usar pipes? Eu tenho sido o Linux por um longo tempo, mas ainda esta coisa básica me deixa confuso.

Por favor ajude.

    
por kingsmasher1 31.07.2011 / 14:25

2 respostas

5

O operador de redirecionamento é usado para transmitir o% co_de de um comando % para um arquivo ( stdout ) ou para transmitir o conteúdo de um arquivo para > para um comando ( stdin ).

O operador de pipe ( < ) transmite a saída dos processos ( | ) para os processos seguintes ' stdout .

A única maneira de fazer com que seu primeiro caso funcione seria usar um arquivo temporário, então você precisaria usar duas etapas:

cat file1 > tmpfile
wc -l < tmpfile
    
por 31.07.2011 / 14:34
3

Você usa pipes quando deseja conectar um FD de um executável a um FD de outro. Você usa o redirecionamento quando deseja conectar um FD de um executável a um arquivo.

    
por 31.07.2011 / 14:26