Comment diriger la sortie de commande vers d'autres commandes?

Exemple :

ls | echo n'imprime rien (une ligne vide, en fait). Je m'attendrais à ce qu'il imprime une liste de fichiers.

ls | grep 'foo', d'autre part, fonctionne comme prévu (imprime des fichiers avec 'foo' dans leur nom).

Ce que je fais dans ces situations est quelque chose comme: ls | while read OUT; do echo $OUT; done mais c'est assez lourd.

Pourquoi la tuyauterie fonctionne-t-elle avec certaines commandes, mais pas avec d'autres ? Comment puis-je contourner ce problème?

demandé sur