
Notre commande Unix du Vendredi soir : cat
Vous connaissez cette scène. Vous êtes dans le Terminal, quelque part dans votre arborescence de fichiers, et vous voulez juste jeter un œil au contenu d’un petit fichier de configuration, d’un journal court ou d’une note en texte brut.
Faut-il vraiment ouvrir le Finder, retrouver le fichier, faire un double-clic, attendre que TextEdit se lance, puis refermer la fenêtre trois secondes plus tard ?
La réponse tient en trois lettres : cat.
Cette commande fait partie de l’ADN d’Unix depuis la toute première version d’AT&T UNIX, écrite par Dennis Ritchie en personne. Sur votre MacBook Pro M4 ou votre iMac sous macOS Sequoia, elle est toujours là, prête à afficher instantanément le contenu d’un fichier dans votre fenêtre de Terminal.
Le nom cat est le raccourci de concatenate, c’est-à-dire mettre bout à bout. Car cette petite commande fait bien plus que lire un fichier. Elle sait aussi les enchaîner, numéroter leurs lignes, ou révéler les caractères invisibles qui se cachent dans vos textes.
Voyons ensemble comment l’utiliser au quotidien.
Anatomie d’une commande vétérante
La syntaxe officielle de cat, telle qu’elle figure dans la man page de macOS, tient sur une seule ligne.
cat [-belnstuv] [file ...]
Le principe est simple. La commande lit un ou plusieurs fichiers de manière séquentielle, puis écrit le résultat sur la sortie standard, autrement dit votre fenêtre de Terminal.
Si vous ne donnez aucun nom de fichier, ou si vous utilisez un simple tiret à la place, cat lit alors depuis l’entrée standard, ce qui ouvre la porte à toutes sortes de combinaisons avec d’autres commandes.
Passons en revue les options disponibles sur macOS, extraites textuellement de la man page officielle du système.
L’option -b numérote uniquement les lignes non vides du fichier, en commençant à 1.
L’option -e affiche les caractères non imprimables (comme le fait l’option -v) et ajoute un signe dollar en fin de chaque ligne.
L’option -l pose un verrou exclusif consultatif sur le descripteur de fichier de la sortie standard. Utile pour éviter les collisions d’écriture concurrentes.
L’option -n numérote toutes les lignes de sortie, y compris les lignes vides, en commençant à 1.
L’option -s compresse les lignes vides consécutives, ce qui rend la sortie visuellement plus aérée.
L’option -t affiche les caractères non imprimables et représente les tabulations par la notation ^I.
L’option -u désactive la mise en tampon de la sortie, pour un affichage immédiat caractère par caractère.
L’option -v rend visibles les caractères non imprimables. Un caractère de contrôle devient par exemple ^X, et le caractère de suppression apparaît sous la forme ^?.
Le tiret seul en position d’argument indique que cat doit lire depuis l’entrée standard à cet endroit précis.
Bon à savoir : la commande cat renvoie le code de sortie 0 en cas de succès, et une valeur supérieure à 0 si une erreur survient. Ce détail sera précieux le jour où vous chaînerez cat dans un script shell.
Trois scénarios du quotidien Mac
Passons de la théorie à la pratique. Voici des cas d’usage que vous rencontrerez très probablement sur votre propre machine.
Premier scénario : vous avez créé une petite note en Markdown pour préparer un article, et vous voulez la vérifier rapidement avant de la partager.
cat /Users/henrido/Documents/idees-articles.md
Le contenu apparaît immédiatement dans le Terminal, sans lancer aucune application graphique. Parfait pour une relecture éclair depuis votre MacBook Air M3 posé sur les genoux.
Deuxième scénario : vous inspectez un fichier de configuration système pour comprendre un comportement de votre Mac mini. Vous voulez numéroter les lignes pour pouvoir référencer précisément un passage dans un ticket support.
cat -n /etc/hosts
Chaque ligne du fichier hôte apparaît alors précédée de son numéro. Vous pouvez ainsi indiquer regardez la ligne 8 sans ambiguïté à la personne qui vous aide.
Troisième scénario : vous préparez un rapport à partir de plusieurs fichiers texte séparés, par exemple des exports de statistiques semaine par semaine, et vous voulez tout réunir dans un unique document.
cat semaine-01.txt semaine-02.txt semaine-03.txt > rapport-mensuel.txt
Ici, cat lit les trois fichiers dans l’ordre et les concatène. La redirection avec le chevron envoie l’ensemble vers un nouveau fichier appelé rapport-mensuel.txt. Attention, ce chevron simple écrase le fichier de destination s’il existait déjà.
C’est là que le nom de la commande prend tout son sens. cat concatène bien, avant tout, plusieurs entrées en une seule sortie.
Le combo qui change la donne : cat et le tuyau
Sur macOS, cat révèle toute sa puissance lorsqu’il est associé à d’autres commandes via le caractère tuyau, aussi appelé pipe et représenté par la barre verticale.
Prenons un exemple concret. Vous voulez retrouver toutes les lignes d’un fichier journal qui mentionnent une erreur, et compter combien il y en a.
cat /var/log/install.log | grep -i "error" | wc -l
Décomposons cette petite chaîne. La commande cat lit le fichier install.log, l’envoie à grep qui filtre les lignes contenant le mot error sans distinction de casse grâce à l’option -i, puis wc -l compte le nombre de lignes résultantes.
Vous avez ainsi un compteur d’erreurs en une seule ligne.
À noter : les utilisateurs Unix aguerris rappellent volontiers que grep sait déjà lire un fichier directement, ce qui rend l’appel à cat superflu ici. Écrire grep -i error /var/log/install.log | wc -l est plus efficace car cela évite un processus intermédiaire. Ce cas est même connu sous le nom de useless use of cat.
Mais pour un débutant, la version avec cat a le mérite de la clarté. On lit littéralement prends ce fichier, puis filtre-le, puis compte-le. Une fois le principe compris, vous pourrez optimiser.
Autre variante moins connue et vraiment utile : la commande cat avec l’option -A n’existe pas sur macOS. Elle est propre à la version GNU de cat que l’on trouve sur Linux. Pour obtenir un équivalent sur votre Mac, combinez -v, -e et -t.
cat -vet mon-fichier.txt
Cette combinaison affiche tous les caractères invisibles, ajoute un dollar en fin de ligne et matérialise les tabulations. Idéal pour traquer un espace intempestif ou une tabulation cachée dans un fichier YAML ou un script shell qui refuse obstinément de fonctionner.
Un petit outil, un grand allié
La commande cat est probablement l’une des premières que tout utilisateur Terminal apprend, et l’une de celles qu’il utilisera le plus longtemps. Sa simplicité est aussi sa force.
Elle ne vous demande rien de plus qu’un nom de fichier, et vous rend en échange une lecture instantanée, sans détour graphique.
Prenez cinq minutes ce week-end. Ouvrez le Terminal, naviguez avec cd vers votre dossier Documents, et essayez cat sur un petit fichier texte que vous connaissez. Puis ajoutez -n pour voir les numéros de ligne apparaître.
Enfin, tentez la concaténation de deux fichiers dans un troisième. Vous verrez très vite pourquoi cat est resté indispensable pendant plus de cinquante ans.
Vous avez une question, une idée ou une remarque ? Je serai ravi de vous lire ! ✉️ henrido@hdrapin.com
En savoir plus sur Les miscellanées Numériques
Subscribe to get the latest posts sent to your email.