18/12/2024

Commandes et Système

Linux : comment afficher les X premières lignes d’un fichier ?

I. Présentation

Sur un serveur Linux, il n'est pas rare de croiser des fichiers de configuration à rallonge ou des fichiers de logs très conséquents. Même si l'on s'intéresse souvent aux événements les plus récents, situés à la fin du fichier, il n'est rare d'avoir besoin de consulter les 10 ou les 20 premières lignes d'un fichier. Comment faire sans avoir à ouvrir le fichier entièrement (ce qui nécessite de le charger) ? C'est ce que nous allons voir dans ce tutoriel.

II. Afficher les 10 premières lignes d'un fichier

La commande "head" est intégrée à de nombreuses distributions Linux, notamment Debian que j'utilise pour cet exemple, et elle permet d'afficher le contenu d'un fichier en commençant par le début (d'où le nom de ce programme, probablement). Ainsi, si l'on appelle la commande head suivie d'un nom de fichier, sans préciser d'options, les 10 premières lignes du fichier s'affichent à l'écran. Voici un exemple avec le fichier "/var/log/apache2/access.log" :

head /var/log/apache2/access.log

Ce qui donne :

Linux : comment afficher les X premières lignes d'un fichier ?

Pour utiliser cette commande, il n'est pas utile d'avoir un accès root sur la machine, à moins que vous cherchiez à lire le contenu d'un fichier protégé auquel cas il sera nécessaire d'avoir suffisamment de privilèges. En préfixant la commande par "sudo", ça devrait aller si votre utilisateur est autorisé.

Maintenant, si l'on veut avoir plus de 10 lignes, admettons 20 lignes, comment faire ? Ce n'est pas beaucoup plus compliqué puisqu'il suffit de spécifier le nom de ligne sous le format "-X" où X représente le nombre de lignes à afficher. Voici comment afficher les 20 premières lignes du fichier access.log :

sudo head -20 /var/log/apache2/access.log

En fait, il y a une autre écriture possible à partir de l'option "-n" :

sudo head -n 20 /var/log/apache2/access.log

Ce que j'aime bien avec la commande head, c'est que l'on peut afficher le contenu de plusieurs fichiers en même temps. Pour comparer les données issues de plusieurs fichiers de logs ou plusieurs fichiers de configuration, ça peut être intéressant. Pour cela, il suffit de préciser les noms de fichiers à la suite (séparé par un espace) :

sudo head /var/log/apache2/access.log /var/log/apache2/error.log

Peut-on récupérer la valeur de la première ligne et la stocker dans une variable ?

La réponse est oui ! Et cela peut s'avérer utile dans un script, d'autant plus dans le cas d'un fichier de configuration. La syntaxe est facile à trouver pour afficher la première ligne :

sudo head -n 1 /var/log/apache2/access.log

Dans un script, on pourra stocker la valeur de cette ligne dans une variable. Voici un exemple avec une variable nommée "log" :

log=$(sudo head -n 1 /var/log/apache2/access.log)

Désormais, vous savez comment afficher les X premières lignes d'un fichier à l'aide de la commande head ! Elle est très pratique et facile à utiliser, même si l'on peut également effectuer la même chose avec awk et sed.

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.