12. Laboratoire enregistré : Unix, pipelines et Bash
12.1 Commandes spécialisées
La séance présente man, whatis et les options d’aide, puis :
| Commande | Rôle principal dans la séance |
|---|---|
tac |
Inverser les lignes d’un fichier. |
less |
Consulter un long texte page par page. |
find |
Rechercher des fichiers selon des critères. |
grep |
Conserver les lignes correspondant à un motif. |
sort |
Trier du texte selon l’ordre choisi. |
uniq |
Éliminer les doublons adjacents. |
wc |
Compter lignes, mots ou caractères. |
head, tail |
Sélectionner le début ou la fin. |
du |
Mesurer l’espace occupé. |
curl |
Transférer une ressource ou tester un service réseau. |
sed |
Transformer un flux ligne par ligne. |
awk |
Traiter des données structurées en champs. |
kill, sleep |
Envoyer un signal; suspendre pour une durée. |
12.2 Exercices 9 à 12 : filtres et composition
L’exercice 9 extrait avec grep les lignes contenant error. L’exercice 10 applique uniq; celui-ci ne supprime que les répétitions consécutives, de sorte qu’un sort préalable peut être nécessaire. L’exercice 11 emploie sed et une expression régulière pour transformer certains error 4xx en warning 4xx tout en conservant le numéro capturé.
L’exercice 12 fusionne ces étapes dans un pipeline : filtrage, déduplication, substitution, puis redirection. Cette version évite les fichiers intermédiaires et rend la circulation des données explicite.
12.3 Opérateurs et redirections
| Opérateur | Décision |
|---|---|
; |
Exécuter la suite indépendamment du résultat précédent. |
&& |
Exécuter la suite seulement après un succès. |
| ` | |
| ` | ` |
> |
Créer ou remplacer le fichier de sortie. |
>> |
Ajouter au fichier de sortie. |
Un here-document fournit plusieurs lignes à une commande jusqu’à un délimiteur. echo -e interprète des séquences comme la tabulation et le saut de ligne.
12.4 Exercices 13 et 14 : fichiers et tableaux
L’exercice 13 cherche les cinq plus gros fichiers : find retient les fichiers, du mesure chacun d’eux, sort classe en ordre numérique décroissant et head conserve les cinq premiers. Il faut distinguer le tri lexicographique du tri numérique ou « humain »; sans option appropriée, 10 peut être placé avant 2.
L’exercice 14 traite un TSV avec identifiant, date, nom, type et taille. Un premier awk conserve la taille — nécessaire comme clé de tri — et le nom. sort classe, head retient l’en-tête et les dix plus petites valeurs, puis un dernier awk n’affiche que le nom. Une colonne peut donc être nécessaire pendant le calcul sans appartenir au résultat final.
12.5 Script Bash et code de retour
Le script de démonstration couvre :
- la ligne d’interpréteur et les commentaires;
$0,$1,$2et$@;- les variables et le répertoire courant;
- la différence entre guillemets doubles, qui permettent l’expansion, et simples, qui conservent le texte littéral;
- les conditions, les boucles
foretwhile, et les fonctions; - le droit d’exécution du fichier.
L’exercice 15 teste un serveur local avec curl. $? contient le code de retour de la commande précédente : 0 signifie succès et une valeur non nulle signale un échec. La sortie peut être redirigée lorsque seul le statut intéresse le script.
L’exercice 16 répète un test et revient à une révision précédente tant que le serveur échoue. Dans un vrai dépôt, un retour arrière modifie l’état de travail; il faut sauvegarder et choisir une méthode récupérable avant d’automatiser cette boucle.