Quand on travaille avec des fichiers volumineux sous Linux, il est souvent inutile d'ouvrir le fichier entier pour voir son contenu. Les commandes head et tail permettent d'afficher respectivement le début et la fin d'un fichier, ce qui est idéal pour visualiser rapidement des logs, des configurations ou des données.
La commande head affiche par défaut les 10 premières lignes d'un fichier. C'est très pratique pour prévisualiser un fichier sans charger l'intégralité de son contenu.
head fichier.txtCet exemple affiche les 10 premières lignes de fichier.txt.
head -n 20 fichier.txtPour afficher les 20 premières lignes, on utilise l'option -n suivie du nombre souhaité. On peut aussi écrire simplement head -20 fichier.txt.
head fichier1.txt fichier2.txthead peut traiter plusieurs fichiers à la fois. Il affichera alors un en-tête avec le nom du fichier avant chaque section.
cat log.txt | head -50Comme beaucoup de commandes Linux, head fonctionne parfaitement avec les pipes. Ici, on affiche les 50 premières lignes du résultat de cat.
La commande tail fait l'inverse de head : elle affiche les dernières lignes d'un fichier. C'est l'outil idéal pour consulter les logs en temps réel ou voir les dernières entrées d'un fichier.
tail fichier.txtPar défaut, tail affiche les 10 dernières lignes de fichier.txt.
tail -n 30 fichier.txtPour voir les 30 dernières lignes, utilisez l'option -n 30 ou simplement -30.
tail -f /var/log/syslogL'option -f (follow) est particulièrement utile pour monitorer les logs. Le terminal continuera à afficher les nouvelles lignes au fur et à mesure qu'elles sont ajoutées au fichier. Pour arrêter, appuyez sur Ctrl+C.
tail -f /var/log/syslog /var/log/auth.logOn peut surveiller plusieurs fichiers simultanément. Les nouvelles lignes de chaque fichier seront affichées avec un en-tête identifiant la source.
tail -n +100 fichier.txtAvec +100, tail affichera tout à partir de la ligne 100 jusqu'à la fin du fichier.
head -c 500 fichier.txtPour afficher les premiers 500 octets au lieu des premières lignes, utilisez -c. Cela peut être utile pour les fichiers binaires ou les fichiers avec des lignes très longues.
tail -f -s 5 /var/log/syslogL'option -s permet de spécifier un intervalle en secondes entre chaque vérification. Ici, le fichier sera vérifié toutes les 5 secondes au lieu de l默认值 (1 seconde).
head -n 100 fichier.txt | tail -n 20Pour afficher les lignes 81 à 100, on peut combiner les deux commandes avec un pipe. Ici, head garde les 100 premières lignes, puis tail en extrait les 20 dernières (donc les lignes 81 à 100).
| Option | Description | Exemple |
|---|---|---|
-n N | Afficher N lignes | head -n 25 fichier.txt |
-c N | Afficher N octets (head uniquement) | head -c 1K fichier.txt |
-f | Suivre le fichier en temps réel (tail uniquement) | tail -f /var/log/syslog |
-s N | Intervalle en secondes entre chaque lecture (tail -f) | tail -f -s 10 log.txt |
+N | Commencer à la ligne N (tail uniquement) | tail -n +50 fichier.txt |
-q | Ne pas afficher les en-têtes pour plusieurs fichiers | head -q fichier1 fichier2 |
-v | Toujours afficher les en-têtes | head -v fichier.txt |
tail -n 50 /var/log/nginx/error.logPermet de voir rapidement les 50 dernières erreurs dans un log serveur.
sudo tail -f /var/log/auth.logUtile pour surveiller les tentatives de connexion sur un serveur Linux.
head -5 donnees.csvPermet de vérifier rapidement la structure d'un fichier CSV avant de le traiter.
tail -f /var/log/monapp.log | grep ERROREn combinant tail -f avec grep, on peut filtrer en temps réel pour ne voir que les lignes contenant "ERROR".
tail -n 2 fichier.txt | head -n 1Pour obtenir l'avant-dernière ligne, on affiche les 2 dernières puis on garde la première avec head.
Essayez d'afficher les 5 premières lignes de votre fichier /etc/passwd. Vous verrez la liste des utilisateurs système.
head -n 5 /etc/passwdAffichez les 20 dernières lignes du fichier /var/log/syslog (ou /var/log/messages sur certaines distributions).
tail -n 20 /var/log/syslogOuvrez un second terminal et lancez la commande suivante pour suivre un log en temps réel :
tail -f /var/log/syslogRevenez à votre premier terminal et tapez une commande (par exemple ls). Vous verrez les nouvelles entrées apparaître dans le second terminal.
Comment afficher les lignes 50 à 75 d'un fichier ?
head -n 75 fichier.txt | tail -n 26cat — Afficher l'intégralité d'un fichier (voir Leçon 2)less — Afficher un fichier page par pagegrep — Rechercher du texte dans un fichier (voir Leçon 50)wc — Compter les lignes, mots et caractères (voir Leçon 83)Les commandes head et tail font partie des outils essentiels sous Linux. Leur simplicité cache une grande puissance, surtout quand on les combine avec des pipes et d'autres commandes comme grep ou awk. N'hésitez pas à les intégrer dans vos scripts pour analyser des logs ou extraire des données spécifiques.
Remember: pour les fichiers très volumineux, head et tail sont beaucoup plus rapides que d'ouvrir le fichier entièrement, car ils ne lisent que les parties nécessaires du fichier.