45 votes

Quel est le consensus général sur "l'utilisation inutile d'un chat" ?

Lorsque j'envoie plusieurs commandes unix telles que grep, sed, tr, etc. j'ai tendance à spécifier le fichier d'entrée qui est traité par cat. Ainsi, quelque chose comme cat file | grep ... | awk ... | sed ... .

Mais récemment, après avoir reçu quelques commentaires sur mes réponses indiquant qu'il s'agissait d'une utilisation inutile du chat, j'ai pensé poser la question ici.

Je me suis renseigné sur la question et je suis tombé sur Article de Wikipédia sur l'UUOC y L'utilisation inutile du prix du chat et il me semble que les arguments avancés s'inscrivent dans une perspective d'efficacité.

La question la plus proche que j'ai rencontrée est celle-ci : Est-ce un gaspillage que d'appeler un chat ? - mais ce n'est pas tout à fait ce que je demande.

Je suppose que le camp de l'UUOC suggère d'utiliser cmd1 args < file | cmd2 args | cmd3 .. ou, si la commande comporte une option de lecture à partir d'un fichier, de transmettre le fichier en tant qu'argument.

Mais pour moi cat file | cmd1 ... | cmd2 semble beaucoup plus facile à lire et à comprendre. Je n'ai pas à me souvenir des différentes manières d'envoyer les fichiers d'entrée aux différentes commandes, et le processus se déroule logiquement de gauche à droite. D'abord l'entrée, puis le premier processus ... et ainsi de suite.

Est-ce que je ne comprends pas les arguments avancés pour justifier l'utilisation inutile du chat ? Je comprends que si je lance une tâche cron qui s'exécute toutes les 2 secondes et qui fait beaucoup de traitement, alors dans ce cas cat peut être un gaspillage. Mais sinon, quel est le consensus général sur l'utilisation de cat ?

1voto

Ce qui serait vraiment bien, c'est un Shell qui supporte une syntaxe comme :

< filename cmd | cmd2 cmd2arg1... | cmd3

En attendant, je pense que cat filename | realcmd1... est acceptable, car elle permet de maintenir la syntaxe standardisée avec les commandes initiales qui requièrent le nom de fichier comme argument.

0voto

Ivin Points 472

Pour tous ceux qui disent que le chat est acceptable parce qu'il "sent" mieux ou qu'il est "plus lisible", je dirais seulement ceci :

Pour vous peut-être... mais pas pour les autres qui pourraient lire ou essayer de comprendre votre code. Si vous n'essayez jamais d'instruire les autres avec vos exemples ou de partager votre code, alors vous pouvez l'utiliser à votre guise.

J'ajouterai également ce commentaire, en tant qu'utilisateur et administrateur/ingénieur Linux de longue date... (et nous sommes nombreux), cela nous fait saigner les yeux de voir cela. Pourquoi ? Parce que cela utilise des ressources sur des systèmes dont nous contrôlons étroitement les ressources. La commande cat et le pipe lui-même utilisent de la mémoire supplémentaire et des gestionnaires de fichiers qui sont complètement inutiles. Vous avez immobilisé des ressources dont mon système a besoin et vous n'avez RIEN gagné qui puisse expliquer l'utilisation de ces ressources. C'est un énorme non non.

Je peux rester assis ici et débattre de choses comme l'odeur du code ou la lisibilité toute la journée avec n'importe qui, mais en fin de compte, c'est une question d'écriture ou d'erreur et chaque fois que vous utilisez des ressources sur un système et que vous n'en tirez aucun bénéfice... c'est une erreur.

En tant qu'utilisateur domestique, vous pouvez suivre mes conseils et apprendre de meilleures façons de faire les choses ou vous pouvez choisir d'être aveuglé par "l'odeur" des chats, c'est votre choix... mais sachez que si vous utilisez ouvertement cette pratique, on vous le reprochera tout le temps et vous devrez silencieusement admettre qu'ils ont raison et que vous êtes têtu parce que c'est vrai. :-)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X