<!--
  canonical-url: https://www.avonture.be/fr/blog/linux-eza
  published:     2024-07-23
  This is a static plain-Markdown mirror generated at build time.
  Visit the canonical URL above for the fully rendered page, with images and interactive components.
-->

# Revisitons la commande ls grâce à eza

> Fatigué de taper ls -alh ? Découvrez eza, le remplaçant moderne et complet de la commande ls de Linux. Apprenez à l'installer et à configurer un alias puissant pour une meilleure expérience en ligne de commande.

---
![Revisitons la commande ls grâce à eza](/img/v2/linux_tips.webp)

**TL;DR**

Cet article présente `eza`, un remplaçant moderne de la commande `ls` (anciennement connu sous le nom d'`exa`), avec de meilleurs réglages par défaut, des icônes et un meilleur formatage. Il montre comment l'installer avec `apt-get` et configurer un alias avec une combinaison utile de flags (`--all --long --group --group-directories-first --icons --header --time-style long-iso`) pour que `ls` utilise automatiquement `eza` et affiche une liste de fichiers plus riche.

Quelle commande CLI utilisez-vous le plus sous Linux ? Très probablement `ls`, pour afficher la liste des fichiers du répertoire courant.

> **Je ne sais pas pour vous, mais j'utilise rarement `ls` sans paramètres. Presque sans y penser, j'ajoute `-alh` chaque fois. C'est devenu mécanique.:**

Et là vous me direz : il suffit de créer un alias `alias ls="ls -alh"`. Bien sûr, mais allons plus loin : revisitons cette commande de base et ajoutons-lui quelques fonctionnalités.

`eza` est un remplaçant moderne de `ls`, comme annoncé sur leur site : <https://eza.rocks/>.

*Il appartient à la même famille de « réécritures modernes des classiques » que [ripgrep](/blog/ripgrep) (pour `grep`) et [delta](/blog/git-delta) (pour `git diff`). Et tant que vous personnalisez votre console, [Customize your Linux prompt with Powerlevel10k](/blog/powerlevel10k_sandbox) vaut aussi dix minutes de votre temps.*

> **eza s'appelait d'abord exa:**
>
> <https://github.com/ogham/exa> est abandonné ; voir [cette issue](https://github.com/ogham/exa/issues/1243).
>
> **exa est devenu eza** : <https://eza.rocks/>

## Résultat {#result}

Une fois `ls` aliasé vers `eza` avec quelques flags, voici à quoi ressemble un simple `ls` :

![eza](./images/eza.webp)

## Le voir à l'œuvre avec Docker {#seeing-it-in-action-with-docker}

Avant de toucher à votre `~/.bashrc`, essayez l'alias dans un container jetable avec un petit dossier varié déjà prêt — un fichier caché, un ou deux sous-dossiers, des fichiers de tailles différentes — pour que le listing ait vraiment quelque chose à montrer.

> **Pourquoi Docker d'abord ?:**
>
> Le Dockerfile ci-dessous installe `eza`, met en place l'alias `ls` exact de cet article et construit un dossier de démo pour vous. Rien ne change sur votre propre machine.

**Dockerfile**

```docker
FROM ubuntu:24.04

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        curl \
        ca-certificates && \
    rm -rf /var/lib/apt/lists/*

# Install eza from a prebuilt release (avoids adding eza's own apt repository
# just for a demo). Pin the version so this image keeps building the same
# way; bump it during a /freshness pass.
RUN curl -fsSL \
    https://github.com/eza-community/eza/releases/download/v0.23.5/eza_x86_64-unknown-linux-gnu.tar.gz \
    | tar -xz -C /usr/local/bin

# Recreate the exact alias from the article
RUN echo "alias ls='eza --all --long --group --group-directories-first --icons --header --time-style long-iso'" \
    >> /root/.bashrc

# Build a small, varied playground so the listing actually looks interesting:
# sub-folders, a dotfile, a text file and a binary-ish file of a different size
RUN mkdir -p /root/demo/src /root/demo/docs && \
    touch /root/demo/.env && \
    echo "# Notes" > /root/demo/README.md && \
    printf 'console.log("hi")\n' > /root/demo/src/index.js && \
    dd if=/dev/zero of=/root/demo/docs/report.pdf bs=1024 count=200 status=none

WORKDIR /root/demo

# Signal clearly that this shell runs inside a container
RUN echo "PS1='\n\e[0;33m🐳 \e[0;36m\$(whoami)\e[0m \w # '" >> /root/.bashrc

CMD ["/bin/bash", "-i"]
```

Buildez-le et lancez-le :

```bash
$ docker build -t eza-demo .
[+] Building 14.2s (7/7) FINISHED
✔ exporting to image
$ docker run --rm -it eza-demo
🐳 root ~/demo # ls
Permissions Size User Date Modified Name
drwxr-xr-x     - root 2026-08-22    docs
drwxr-xr-x     - root 2026-08-22    src
.rw-r--r--    0 root 2026-08-22    .env
.rw-r--r--    8 root 2026-08-22    README.md
```

Voilà `ls` — en réalité `eza` sous le capot, grâce à l'alias intégré dans l'image. Icônes, dossiers regroupés en premier, dates lisibles : le même résultat que la capture ci-dessus, sans rien avoir installé sur votre propre machine.

## Installer eza {#install-eza}

L'installation est simple, il suffit de lancer `sudo apt-get update && sudo apt-get install eza` ; rien de plus.

À partir de là, lancez simplement `eza` en ligne de commande et vous obtiendrez la liste des fichiers avec tous les réglages par défaut.

Sur mon ordinateur, j'ai opté pour cette liste de paramètres : `--all --long --group --group-directories-first --icons --header --time-style long-iso` et, bien sûr, j'ai mis à jour mon fichier `~/.bashrc` en y ajoutant un alias (si vous êtes sous ZSH, [donnez à cet alias son propre fichier](/blog/modular-zsh-workflow) plutôt que de faire grossir un `.zshrc` monolithique) :

```bash
$ alias ls='eza --all --long --group --group-directories-first --icons --header --time-style long-iso'
```

Et maintenant, en tapant simplement `ls`, vous obtiendrez le listing montré plus haut.
