Cours Linux / Lire les fichiers avec cat, less, more, head et tail
Pour lire un petit fichier, utilisez cat ; pour parcourir un texte long, ouvrez less ou more ; pour voir seulement le début ou la fin, choisissez head ou tail. Ces usages affichent le contenu sans le réécrire. Dans cette leçon, un même fichier de cinq lignes permet de comparer les résultats, puis un fichier plus long rend la pagination visible.
Les exemples utilisent Bash et les outils GNU pour cat, head, tail et seq. less et more sont des programmes distincts qui peuvent manquer dans une installation minimale. Utilisez le terminal de votre Linux de pratique, avec un compte ordinaire ; aucun sudo n’est nécessaire pour ces fichiers de démonstration.
Préparer un fichier de cinq lignes dans un dossier neuf
Le dossier linux-course-10-practice doit être nouveau. S’il existe déjà, choisissez un autre nom à la ligne candidat. La préparation ci-dessous n’écrit le fichier que si mkdir a réussi ; en cas d’échec, la variable lecture reste vide.
lecture=
candidat="$HOME/linux-course-10-practice"
if mkdir -- "$candidat" &&
printf 'alpha\nbeta\ngamma\ndelta\nepsilon\n' > "$candidat/sample.txt"; then
lecture=$candidat
printf 'Fichier : %s\n' "$lecture/sample.txt"
else
printf '%s\n' 'Préparation échouée : choisir un dossier neuf et vérifier avant de poursuivre.' >&2
fi
Conservez le chemin affiché et gardez le même terminal pour les étapes qui utilisent lecture. \n représente un saut de ligne. Le symbole > envoie la sortie dans un fichier et remplace normalement son contenu s’il existe : c’est une écriture, contrairement aux commandes de lecture qui suivent. Le manuel Bash des redirections explique ce traitement par le shell.
Si la préparation signale une erreur, examinez-la avant de continuer. Les blocs suivants commencent par test -n "$lecture" pour éviter de poursuivre lorsque cette variable est vide. Ne la redéfinissez pas vers des fichiers sans rapport avec l’exercice.
Afficher le petit fichier avec cat
cat envoie les données du fichier vers la sortie standard. Avec un petit texte, vous voyez immédiatement l’ensemble, puis retrouvez l’invite du shell :
test -n "$lecture" && cat -- "$lecture/sample.txt"
Le résultat attendu est exactement :
alpha
beta
gamma
delta
epsilon
Le manuel GNU de cat décrit cette sortie. cat ne vous fournit pas ici une navigation par pages : un fichier très long peut défiler rapidement. Son affichage n’est pas une commande d’édition.
Pour un fichier inconnu, ne déduisez pas de l’extension qu’il s’agit d’un texte convenant à l’affichage brut. Le cours identifier le type et le format d’un fichier explique le rôle de file et ses limites. Des caractères de contrôle peuvent modifier l’apparence d’un terminal ; l’exercice emploie volontairement un texte simple connu.
Parcourir et rechercher avec less ou more
Un pager, ou visualiseur paginé, permet de parcourir un texte dans le terminal. Essayez d’abord le petit fichier avec less :
test -n "$lecture" && less -- "$lecture/sample.txt"
Dans la configuration habituelle de less, Espace avance d’un écran, b recule, /gamma suivi d’Entrée cherche gamma et n cherche la correspondance suivante. q quitte le visualiseur. Ces touches se saisissent dans less ; elles ne sont pas des lignes à ajouter dans le shell après la commande.
Cinq lignes tiennent souvent sur un seul écran. Pour observer le changement de page, créez un autre fichier contenant les nombres de 1 à 80, puis ouvrez-le :
test -n "$lecture" &&
seq 1 80 > "$lecture/long-sample.txt" &&
less -- "$lecture/long-sample.txt"
- Appuyez sur Espace : vous devez voir une portion située plus loin dans les nombres.
- Appuyez sur b : vous revenez vers la portion précédente.
- Tapez /60 puis Entrée pour chercher 60. q termine la consultation.
Le nombre de lignes par écran dépend de la hauteur du terminal et du retour à la ligne. Si votre terminal affiche déjà les 80 lignes, réduisez sa hauteur pour voir la pagination. Des options ou raccourcis personnalisés peuvent modifier le comportement ; le manuel less(1) détaille les commandes de navigation et de recherche.
Vous pouvez comparer avec more sur le même fichier :
test -n "$lecture" && more -- "$lecture/long-sample.txt"
Espace avance et q quitte dans l’usage courant. Les fonctions de retour et de recherche dépendent de l’implémentation et de la source lue ; le manuel de more fourni par util-linux décrit notamment des fonctions disponibles sur les systèmes Linux actuels. Un fichier court peut conduire à une sortie immédiate à sa fin : cela ne veut pas dire qu’il était vide.
Si un visualiseur manque, ne bloquez pas tout l’exercice : cat, head et tail permettent encore de vérifier le petit fichier. Pour installer less ou more, utilisez la gestion des paquets propre à votre distribution plutôt que de supposer que les deux programmes existent partout.
Lire seulement le début ou la fin avec head et tail
head affiche le début, tail la fin. -n 2 demande deux lignes ; sans indication de nombre, les outils GNU en affichent normalement dix.
test -n "$lecture" && head -n 2 -- "$lecture/sample.txt"
Les deux premières lignes sont :
alpha
beta
test -n "$lecture" && tail -n 2 -- "$lecture/sample.txt"
Les deux dernières sont :
delta
epsilon
Vous n’avez pas modifié le fichier pour obtenir ces vues partielles. Les options GNU de head et de tail distinguent aussi les nombres de lignes et d’octets : conservez -n pour cet exercice en lignes.
Suivre un ajout avec tail dans deux terminaux
tail -f affiche une fin de fichier puis attend les données ajoutées. Pour observer cet effet sans toucher à un journal du système, utilisez uniquement sample.txt dans votre dossier de démonstration.
- Dans le premier terminal, gardez la variable lecture définie et exécutez le bloc suivant. Notez le chemin affiché avant le début du suivi.
test -n "$lecture" &&
printf 'Fichier suivi : %s\n' "$lecture/sample.txt" &&
tail -n 2 -f -- "$lecture/sample.txt"
Vous voyez delta et epsilon, puis la commande reste active. L’absence d’une nouvelle invite est attendue : elle attend d’autres données.
- Ouvrez un second terminal du même Linux. Remplacez la valeur de fichier ci-dessous par le chemin complet de sample.txt indiqué dans le premier terminal. Les variables d’un terminal ne sont pas automatiquement partagées avec l’autre.
fichier='/remplacer/par/le/chemin/affiché/sample.txt'
test -f "$fichier" && printf 'zeta\n' >> "$fichier"
Le second terminal ajoute une ligne à ce fichier. Le premier doit ensuite afficher zeta ; un bref délai peut dépendre du mécanisme de suivi et du stockage. Ici, >> est l’opération qui écrit : tail ne crée pas cet ajout.
- Dans le premier terminal, appuyez sur Ctrl+C pour arrêter tail et retrouver l’invite. q est une commande de less ou more dans les usages décrits, pas le moyen habituel de terminer tail -f.
- Remettez le fichier de démonstration dans son état initial avec le bloc suivant, puis vérifiez à nouveau sa fin.
test -n "$lecture" &&
printf 'alpha\nbeta\ngamma\ndelta\nepsilon\n' > "$lecture/sample.txt" &&
tail -n 2 -- "$lecture/sample.txt"
Vous devez retrouver delta puis epsilon. Ce rétablissement est approprié uniquement pour le fichier jetable créé ici, pas pour un journal réel.
GNU tail -f suit normalement le fichier ouvert par son descripteur. Pour un journal remplacé ou recréé lors d’une rotation, -F combine le suivi par nom et de nouvelles tentatives d’ouverture. Choisissez selon le fonctionnement du journal et vérifiez les messages ; l’option ne contourne pas les droits d’accès.
Choisir l’outil et vérifier ce qui a été modifié
| Besoin | Outil | Résultat |
|---|---|---|
| Afficher un petit texte entier | cat | Sortie immédiate dans le terminal |
| Parcourir et chercher dans un long texte | less | Navigation dans un visualiseur |
| Afficher par écrans | more | Pagination selon l’implémentation |
| Voir les premières lignes | head -n | Début seulement |
| Voir les dernières lignes ou les ajouts | tail -n ou tail -f | Fin actuelle ou suivi continu |
Les consultations utilisées ici ne réécrivent pas le contenu, mais une lecture peut affecter un horodatage d’accès selon le système. Les créations et modifications ont été réalisées par printf ou seq avec > et >>. Le fichier de 80 lignes reste séparé de sample.txt ; les deux peuvent être conservés pour revoir les commandes.
Si vous voulez retirer uniquement le fichier long devenu inutile, vérifiez son chemin et utilisez rm -i sur long-sample.txt dans ce dossier, en confirmant seulement le nom attendu. Il n’est pas nécessaire de supprimer tout le répertoire pour terminer une consultation.
Le guide de tail et du suivi des journaux détaille les options lorsque vous devez adapter la lecture d’une fin de fichier ou le suivi de ses ajouts.




