Découverte de la commande exa : une version moderne de ls sous Linux

I. Présentation

À chaque fois que nous souhaitons visualiser le contenu d'un répertoire sous Linux (ou tout système UNIX-like), nous utilisons spontanément "ls" ou l'une de ses variantes avec des paramètres. La commande "ls" est l'une des premières commandes que nous apprenons en bash et elle est, sans contredit, l'une des plus utilisées quotidiennement par un administrateur système. Il existe pourtant une alternative moderne à "ls", un utilitaire nommé "exa" qui comprend des fonctionnalités beaucoup plus riches que son ancêtre qui a été introduit dans les années 1960 sous Multics, puis UNIX. Lorsque vous aurez essayé "exa" qui offre un affichage beaucoup plus riche, vous aurez du mal à vous en passer !

Les administrateurs Linux les plus aguerris auront peut-être un alias du type "ls -GAhltr" (-G : ne pas afficher les groupes dans une longue liste | A : ne pas lister les . et .. implicites | h : affichage "human-readable" | l : utiliser un format de liste longue | t : trier en selon le moment de création, le plus récent en premier ; r : utiliser ordre inverse lors du tri) pour personnaliser l'affichage et mieux classer l'information en sortie. On conviendra aisément que l'accumulation d'un tel nombre de paramètres est non seulement laborieux, mais peut aussi être difficile à déchiffrer pour un novice. Avec "ls", la sortie est très condensée, notamment pour les types de fichiers et les permissions, si bien qu'on préfère souvent utiliser "-grep" pour afficher uniquement ce qui nous intéresse... C'est ici que la commande "exa" devient particulièrement utile.

Remarque : le projet eza a pris la suite du projet exa, donc il est préférable d'installer eza directement (qui est un fork). En suivant ce lien, vous pourrez accéder au dépôt du projet exa.

II. Qu'est-ce que exa et comment l'installer ?

Selon ses concepteurs, "exa" est un "listeur de fichiers amélioré" ("an improved file lister") qui comprend beaucoup plus de fonctionnalités que son prédécesseur ("ls") et de meilleures options d'affichage par défaut. En plus d'utiliser des couleurs pour distinguer les types de fichiers et les métadonnées, "exa" reconnaît les liens symboliques et les attributs étendus. Il peut également afficher en mode "tree" et il s'intègre avec Git. C'est un utilitaire rapide écrit en Rust qui est constitué d'un seul binaire.

Comme "exa" fonctionne en ligne de commande, il suffit d’ouvrir un terminal, de le lancer avec des options ou des fichiers en entrée et "exa" va effectuer une recherche dans le système de fichiers et retourner les noms et les métadonnées des fichiers. Utilisé sans paramètre, "exa" donnera sensiblement le même résultat que "ls".

Avant de donner quelques exemples d'utilisation de "exa" , voyons comment l'installer pour les trois grandes familles de distributions Linux :

Debian et dérivées :

apt install exa

Fedora et dérivées :

dnf install exa

openSUSE :

zypper install exa

III. Exemples d'utilisation d'exa

Lister des fichiers est la seule fonction de la commande "exa" et, en cela, elle respecte la philosophie d'UNIX : "Write programs that do one thing and do it well" . Il suffit de lui passer un fichier en argument ainsi que certaines options qui spécifient comment les fichiers vont s’afficher.

Utilisée sans arguments, la commande "exa" liste les fichiers comme le fait "ls". Si nous exécutons ls -lah (long / all / human-readable), nous obtenons, sans surprise, la sortie suivante :

ls -lah

Les mêmes paramètres utilisés avec "exa" donnent la sortie suivante :

exa -lah 
exa --long --all --header

Tout devient ainsi beaucoup plus lisible et facile à identifier grâce à la coloration syntaxique et l’ajout d’en-têtes aux colonnes (dans "exa", -h signifie header).

Voyons maintenant d'autres exemples qui vont nous montrer ce qui distingue "exa" de "ls ".

Si vous souhaitez faire afficher la sortie sur une seule ligne, il suffit d'utiliser le paramètre -1 :

exa -1
exa --oneline

Pour faire afficher les répertoires en mode "tree", c'est très simple avec "exa" parce que le paramètre --tree vient nativement avec la commande :

exa -T
exa --tree

Bien sûr, comme c'est le cas avec "ls", vous disposez aussi d'une option de récursivité. Dans l'exemple suivant, elle est combinée à --long :

exa --long --recurse
exa -lR

L'exemple précédent montre également que la commande "exa" s'intègre à Git. Ici, on voit qu'elle souligne et met le README.md en surbrillance pour le repérer plus facilement.

Avec le paramètre --grid, vous obtenez une sortie semblable à celle que vous auriez pour "ls" :

exa --grid
exa --G

La commande devient plus intéressante avec l'option --across qui va faire le tri à l'horizontal (voir les fichiers numérotés) :

exa --across
exa -x

"exa" dispose aussi d'options de filtrage, en voici deux exemples :

exa --long --sort=name
exa -l -s=name
exa --long --sort=date
exa -l -s=date

D'autres options de tri sont disponibles comme :

  • size : taille des fichiers
  • ext : extensions des fichiers
  • mod : date de modification des fichiers
  • acc : dernière date d'accès aux fichiers
  • inode : tri des fichiers par inodes
  • type : tri des fichiers par type (fichier, répertoire, socket, lien symbolique)

IV. Conclusion

Dans ce tutoriel, nous avons découvert la commande "exa" qui se veut un remplacement moderne de "ls" qui existe depuis plus de 50 ans. "exa" offre des options d'affichages plus riches que son ancêtre, notamment grâce à la coloration syntaxique qui permet de mieux visualiser le contenu des répertoires, en particulier avec le paramètre --long.

Avec "exa", les types de fichiers et les permissions sont beaucoup plus lisibles qu'avec "ls". Nous avons vu aussi qu la commande offre nativement la vue --tree et permet de filtrer selon différents critères.

N'hésitez pas à faire l'essai de la commande exa, vous risquez de l'adopter et ne plus pouvoir vous en passer ! Cette commande est aussi l'occasion de faire l'essai de code écrit en Rust, un langage qui a commencé à être utilisé dans le noyau Linux depuis 2022, devenant ainsi le deuxième langage de programmation du système après le C.

Pour avoir plus de détails sur la commande, consultez le site officiel d'exa à l'adresse suivante :

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Luc BRETON

Administrateur système et cloud avec une orientation DevOps pour une grande chaîne de pharmacies québécoise. Je suis plutôt généraliste avec une forte expérience côté virtualisation, stockage, cloud hybride et un intérêt particulier pour l'automatisation. J'aime le transfert de connaissances et il me fait plaisir d'être la première voix nord-américaine d'IT-Connect !

Nombre de posts de cet auteur : 6.Voir tous les posts

2 thoughts on “Découverte de la commande exa : une version moderne de ls sous Linux

  • exa n’est plus trop maintenu, d’ailleurs plus disponible sous fedora depuis la 39..

    Il faut se tourner vers eza. d’ailleurs le GIT de exa le dit explicitement :

    exa is unmaintained, use the fork eza instead.

    source: https://github.com/ogham/exa

    Répondre

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.