Y a-t-il des avantages supplémentaires à gérer un fichier et à le rediriger vers grep, en plus de la commodité? La commodité étant que, lorsque je récupère des commandes telles que celles ci-dessous de mon historique, le curseur se trouve à la fin de la ligne, il est donc facile de modifier la commande avec un texte différent pour effectuer une grep contre le même fichier.
Alors, quels autres avantages pourrait-il y avoir à la convention suivante:
cat /var/tmp/trace.2043925204.xt | grep -in profile
cat /var/tmp/trace.2043925204.xt | grep -n Profile-Main
au lieu de:
grep -in profile /var/tmp/trace.2043925204.xt
grep -n Profile-Main /var/tmp/trace.2043925204.xt
cat
est beaucoup plus clair à lire que<
. Ou peut-être juste pour nous, fogeys qui pensons qu'Unix et bash pourraient en apprendre beaucoup de VMS et DCL.Il n'y a aucun avantage. Votre curseur étant à la fin n'a pas beaucoup d'importance si vous le structurez comme ceci à la place:
< inputfile grep -args foo
la source
Vous n'avez tout simplement pas du tout besoin d'utiliser cat dans cette situation. C'est inutile et une perte de temps, car des outils tels que grep prennent les noms de fichiers comme arguments.
Mise à jour: Merci, @Andy Lester, d'avoir souligné que ces timings ne prennent pas en compte le cache disque. J'ai appris quelque chose de nouveau! Mais des économies d'une fraction de seconde ne font pas beaucoup de différence de toute façon. Je pense simplement que diriger le chat vers grep n'est pas une façon logique de faire les choses. C'est comme demander à quelqu'un de vous aider avec un problème, lorsque vous êtes parfaitement capable de le résoudre vous-même.
la source
La facilité d'édition est le seul véritable avantage, et si vous le faites sur la ligne de commande, le temps supplémentaire nécessaire pour exécuter le
cat
et faire le pipe ne fera pas vraiment de différence.Il n'y a cependant aucune raison de le faire dans un script shell.
la source
Il n'y a aucun avantage. Au lieu de vous soucier de modifier les commandes, apprenez à mieux naviguer dans votre ligne de commande shell avec les touches accélératrices et les raccourcis.
la source
Non et cela pourrait même être extrêmement lent dans l'exemple que vous donnez.
Un
pipe
est créé entre cat et grep, ce qui n'est pas obligatoire lors du passage du nom de fichier directement à grep. Cependant, je ne pense en aucun cas que vous observerez des limitations de débit à cause de cela.Parmi les autres avantages de la canalisation d'entrée vers grep, citons un traitement supplémentaire préalable, comme l'utilisation d'utilitaires avec des capacités de lecture de fichiers plus avancées. (Voir
tee
,zcat
entre autres).la source