← Sommaire SkyLinux

Leçon 83 : head et tail — Visualiser le début et la fin des fichiers

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.

📖 head — Afficher le début d'un fichier

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.

Utilisation de base

head fichier.txt

Cet exemple affiche les 10 premières lignes de fichier.txt.

Spécifier le nombre de lignes

head -n 20 fichier.txt

Pour afficher les 20 premières lignes, on utilise l'option -n suivie du nombre souhaité. On peut aussi écrire simplement head -20 fichier.txt.

Afficher les premières lignes de plusieurs fichiers

head fichier1.txt fichier2.txt

head peut traiter plusieurs fichiers à la fois. Il affichera alors un en-tête avec le nom du fichier avant chaque section.

Utiliser avec un pipe

cat log.txt | head -50

Comme beaucoup de commandes Linux, head fonctionne parfaitement avec les pipes. Ici, on affiche les 50 premières lignes du résultat de cat.

📖 tail — Afficher la fin d'un fichier

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.

Utilisation de base

tail fichier.txt

Par défaut, tail affiche les 10 dernières lignes de fichier.txt.

Spécifier le nombre de lignes

tail -n 30 fichier.txt

Pour voir les 30 dernières lignes, utilisez l'option -n 30 ou simplement -30.

Suivre un fichier en temps réel (-f)

tail -f /var/log/syslog

L'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.

Suivre plusieurs fichiers

tail -f /var/log/syslog /var/log/auth.log

On peut surveiller plusieurs fichiers simultanément. Les nouvelles lignes de chaque fichier seront affichées avec un en-tête identifiant la source.

Afficher à partir d'une ligne spécifique

tail -n +100 fichier.txt

Avec +100, tail affichera tout à partir de la ligne 100 jusqu'à la fin du fichier.

🔧 Options avancées

head avec l'option -c (octets)

head -c 500 fichier.txt

Pour 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 avec l'option -s (intervalle)

tail -f -s 5 /var/log/syslog

L'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).

Combiner head et tail pour des lignes spécifiques

head -n 100 fichier.txt | tail -n 20

Pour 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).

📊 Résumé des options principales

OptionDescriptionExemple
-n NAfficher N ligneshead -n 25 fichier.txt
-c NAfficher N octets (head uniquement)head -c 1K fichier.txt
-fSuivre le fichier en temps réel (tail uniquement)tail -f /var/log/syslog
-s NIntervalle en secondes entre chaque lecture (tail -f)tail -f -s 10 log.txt
+NCommencer à la ligne N (tail uniquement)tail -n +50 fichier.txt
-qNe pas afficher les en-têtes pour plusieurs fichiershead -q fichier1 fichier2
-vToujours afficher les en-têteshead -v fichier.txt

💡 Cas d'utilisation courants

Consulter les dernières erreurs dans un log

tail -n 50 /var/log/nginx/error.log

Permet de voir rapidement les 50 dernières erreurs dans un log serveur.

Monitorer les connexions en temps réel

sudo tail -f /var/log/auth.log

Utile pour surveiller les tentatives de connexion sur un serveur Linux.

Voir le début d'un fichier CSV

head -5 donnees.csv

Permet de vérifier rapidement la structure d'un fichier CSV avant de le traiter.

Analyser les dernières lignes d'un journal applicatif

tail -f /var/log/monapp.log | grep ERROR

En combinant tail -f avec grep, on peut filtrer en temps réel pour ne voir que les lignes contenant "ERROR".

Récupérer l'avant-dernière ligne d'un fichier

tail -n 2 fichier.txt | head -n 1

Pour obtenir l'avant-dernière ligne, on affiche les 2 dernières puis on garde la première avec head.

📝 Exercices pratiques

Exercice 1

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/passwd

Exercice 2

Affichez les 20 dernières lignes du fichier /var/log/syslog (ou /var/log/messages sur certaines distributions).

tail -n 20 /var/log/syslog

Exercice 3

Ouvrez un second terminal et lancez la commande suivante pour suivre un log en temps réel :

tail -f /var/log/syslog

Revenez à votre premier terminal et tapez une commande (par exemple ls). Vous verrez les nouvelles entrées apparaître dans le second terminal.

Exercice 4

Comment afficher les lignes 50 à 75 d'un fichier ?

head -n 75 fichier.txt | tail -n 26

🔗 Commandes liées

📚 Pour aller plus loin

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.