O redirecionamento para trás é o mesmo que um pipe?


11

No Linux, se você digitar

sort < txtfile

é a mesma coisa que

cat txtfile | sort

Respostas:


17

Para sua pergunta de título: Não. Obter stdinconteúdo do arquivo ( redirecionamento de entrada ) não é o mesmo que canalizar a saída de um programa para a entrada de outro programa.

Mas, como você catrealmente imprime o conteúdo de um arquivo, o resultado é efetivamente o mesmo nesse exemplo.


Mas mesmo os seguintes itens produzem resultados muito diferentes:

$ cat * | sort
$ sort < *

Se houver mais de um arquivo correspondente, o último produzirá

-bash: *: ambiguous redirect

já que não é tão flexível quanto o anterior, que coletará todos os arquivos correspondentes e os canalizará como entrada sort.


3
Que tal ... sort *? Nenhum uso inútil de gato, nenhum uso inútil de indireção, mais curto para digitar, mais fácil para pensar, e acredito que a classificação GNU o levará a otimizações de escalabilidade para arquivos muito grandes (não tenho tanta certeza disso - metade lembrando algo lá)
veja

1
@sehe Provavelmente. Eu apenas usei o exemplo para mostrar que os dois são diferentes. Não se trata de uso eficiente de classificação. A classificação é mais flexível do que isso, com certeza.
Daniel Beck

@DanielBeck, em relação à eficiência, é sort < txtfilemuito mais eficiente do que cat txtfile | sort?
Pacerier 13/03/2015
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.