Définition du Jargon File
Le « Jargon File », dans sa version 4.3.3, définit la commande cat comme suit :
- Sert à afficher, sans s'arrêter, un fichier entier à l'écran ou sur une autre sortie standard.
- Par extension, sert à envoyer une grande quantité de données à une cible non préparée ou n'ayant pas l'intention de les lire soigneusement. La commande est donc considérée comme limitée.
Pour les fans d'Unix, cat est considéré comme un excellent exemple de ce qu'est une conception "User-interface" parce que, d'une part, elle donne le contenu du fichier sans complément inopiné comme une espace ou des séparateurs entre les fichiers et, d'autre part, elle ne nécessite pas que le fichier soit constitué de lignes de texte mais fonctionne avec n'importe quel type de donnée.
Pour les détracteurs d'Unix, cat est considéré comme l'archétype d'une mauvaise conception "User-interface" car son nom est particulièrement mal choisi. En effet, cette commande est bien plus utilisée pour afficher un unique fichier sur la sortie standard que pour concaténer plusieurs fichiers. De fait, le nom cat est donc aussi non-intuitif que le nom de la commande cdr en Lisp par exemple qui, elle, a pour but d'extraire un pointeur.
Cat et UUOC
UUOC, extrait de comp.unix.shell sur Usenet, signifie « Useless Use of cat » (soit : utilisations inutiles de cat). Comme certains de comp.unix.shell le firent remarquer, le but de la commande cat est de concaténer des fichiers. Si elle est utilisée sur seulement un fichier, c'est une perte de temps et un surcoût inutile de ressources : « The purpose of cat is to concatenate (or 'catenate') files. If it's only one file, concatenating it with nothing at all is a waste of time, and costs you a process »
Exemples d'UUOC
On voit faire :
cat file | autres_commandes avec leurs arguments
au lieu de :
**<**file autres_commandes avec leurs arguments
ou plus classiquement :
autres_commandes avec leurs arguments **<**file
qui font la même chose mais sont moins chers en termes de ressources.
Depuis 1995, des récompenses sont remises occasionnellement pour les meilleures utilisations inutiles de cat (UUOC). Il arrive souvent que Randal L. Schwartz, auteur de nombreux livres sur Perl et consultant en programmation, remette ces récompenses. Il y a d'ailleurs un site Web consacré uniquement à l'UUOC Award ainsi qu'à d'autres récompenses similaires.
Pour les hackers, l'activité de supprimer des UUOC est parfois appelé demoggification (« Moggy » étant un terme d'anglais du Commonwealth désignant affectueusement un chat domestique, « a cat »).