La redirection vers l'arrière est-elle la même chose qu'un tuyau?


Réponses:


17

À votre question de titre: Non. Obtenir à stdinpartir du contenu d'un fichier ( redirection d'entrée ) n'est pas la même chose que diriger la sortie d'un programme vers l'entrée d'un autre programme.

Mais, puisque votre catimprime simplement le contenu d'un fichier, le résultat est effectivement le même dans cet exemple.


Mais même juste ce qui suit produit des résultats très différents:

$ cat * | sort
$ sort < *

S'il y a plus d'un fichier correspondant, ce dernier produira

-bash: *: ambiguous redirect

car il n'est tout simplement pas aussi flexible que le premier, qui capturera tous les fichiers correspondants et les dirigera en entrée sort.


3
Et ... sort *? Pas d'utilisation inutile de chat, pas d'utilisation inutile d'indirection, le plus court à taper, le plus facile à penser, et je pense que le tri GNU vous offrira des optimisations d'évolutivité pour les très gros fichiers (pas si sûr - la moitié se souvient de quelque chose là-bas)
sehe

1
@sehe Probablement. Je viens d'utiliser l'exemple pour montrer que les deux sont différents. Il ne s'agit pas d'une utilisation efficace du tri. Le tri est plus flexible que cela, bien sûr.
Daniel Beck

@DanielBeck, En ce qui concerne l'efficacité, est sort < txtfilebeaucoup plus efficace que cat txtfile | sort?
Pacerier
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.