Question 1Que fait le symbole pipe | ?
Pipes — Chaîner les commandes
Apprends comment un pipe passe la sortie d'une commande à la suivante, compte les lignes avec wc -l, trie avec sort, et la combinaison classique sort | uniq pour supprimer les doublons — tout en pratique dans un terminal en navigateur.
Qu'est-ce qu'un pipe — le symbole |
Le pipe | est le symbole qui passe directement la sortie d'une commande à la commande suivante en entrée.
En traitant les résultats d'une commande avec une autre, tu combines de petites commandes pour accomplir la tâche.
C'est la philosophie Unix de construire des traitements en connectant des outils à usage unique.
| passe la sortie de gauche à l'entrée de droite, en chaînant des commandes à usage unique.echo apple > fruits.txt # crée la ligne 1
echo banana >> fruits.txt # ajoute
echo cherry >> fruits.txt # ajoute
cat fruits.txt | wc -l # compte les lignes -> 3
ls / | wc -l # nombre d'éléments à la racine
N'importe quoi peut être connecté
Les pipes ne sont pas liés à des commandes spécifiques.
N'importe quelle commande qui produit une sortie standard et n'importe quelle commande qui accepte une entrée standard peuvent être librement connectées.
Les combinaisons sont innombrables : ls | wc -l pour compter les fichiers, cat fichier | sort pour trier, et ainsi de suite.
echo log1 > lines.txt # crée la ligne 1
echo log2 >> lines.txt # ajoute
echo log3 >> lines.txt # ajoute
cat lines.txt | wc -l # 3
ls /etc | wc -l # nombre d'éléments dans /etc
| Commande | Rôle dans un pipe |
|---|---|
| | Passe la sortie de gauche à l'entrée de droite |
wc -l | Compte les lignes reçues |
sort | Trie les lignes reçues alphabétiquement |
uniq | Réduit les lignes dupliquées adjacentes à une seule |
head / tail | Prend juste le début / la fin de ce qu'il reçoit |
Trier — sort
sort est la commande qui trie les lignes qu'elle reçoit.
Par défaut elle trie alphabétiquement (en ordre de chaîne).
Elle peut prendre la sortie de la commande précédente via un pipe et passer le résultat trié à l'écran ou à la commande suivante.
sort trie alphabétiquement les lignes reçues via un pipe et les affiche.echo banana > fruits.txt # crée dans le désordre
echo apple >> fruits.txt
echo cherry >> fruits.txt
cat fruits.txt | sort # trié en apple / banana / cherry
Supprimer les doublons — uniq
uniq est la commande qui réduit les lignes dupliquées consécutives à une seule.
uniq ne regarde que les lignes adjacentes, donc il ne peut pas réduire des lignes identiques qui sont loin l'une de l'autre.
Quand tu veux fiablement réduire les doublons à une seule ligne, l'approche classique est sort | uniq : rassemble d'abord les mêmes lignes côte à côte avec sort, puis connecte à uniq.
sort rassemble les doublons côte à côte, et uniq réduit les dupliqués consécutifs à un seul.echo pear > list.txt # crée avec des doublons
echo apple >> list.txt
echo pear >> list.txt
cat list.txt | sort # apple / pear / pear
cat list.txt | sort | uniq # apple / pear
sort avant uniq
uniq traite comme doublons uniquement les lignes adjacentes.
Il ne peut pas réduire des lignes identiques qui sont loin l'une de l'autre, donc quand tu veux ramener les doublons à une seule ligne, trie d'abord avec sort puis connecte à uniq.
Vérification des connaissances
Répondez à chaque question une par une.
Question 2Qu'est-ce qui s'affiche quand tu lances cat fruits.txt | wc -l ?
Question 3Quand tu veux réduire des lignes dupliquées à une seule, quelle commande est efficace à connecter avant uniq ?