Mieux vaut éviter le chat; écrivez-le de cette façon si l'édition de lignes est importante :
$ < filename grep pattern
La raison en est que pousser toutes les données via cat coûte de la mémoire et des ressources CPU. Un autre avantage de passer le nom de fichier comme argument plutôt que de rediriger stdin est qu'il permet à la commande l'option de mmap() le fichier.
Je n'arrive pas à croire que personne n'ait encore fait référence à "Useless Use of Cat" http://www.smallo.ruhr.de/award.html
Il y a un avantage discutable. Si vous avez un long pipeline, il semble un peu plus orthogonal avec cat :
cat file | command1 | command 2 | command3
Il regroupe toutes les commandes ensemble.
Bien sûr, comme d'autres l'ont dit (et je le fais)
< file command1 | command2 | command3
Effectue à peu près la même chose. Cela dit, le chat est assez petit et n'arrêtera pas votre ordinateur si vous l'utilisez quand vous n'en avez pas vraiment besoin.
Utilise normalement cat
vs frapper directement un fichier ne change rien, mais cela fait une différence pour certaines commandes qui se soucient s'il y a plusieurs fichiers comme arguments, comme grep
. Exemple :
cat file1 file2 | grep SOMETHING
aura une sortie différente de
grep SOMETHING file1 file2
Qui aura les noms de fichiers correspondants dans la sortie. Il y a des moments où je ne veux pas les noms de fichiers, et c'est un avantage d'utiliser cat
.
Il n'y a aucun avantage. Votre curseur étant à la fin n'a pas non plus beaucoup d'importance si vous le structurez comme ceci :< inputfile grep -args foo