How to Install eza on Debian: A Modern Replacement for ls

eza is a modern, maintained replacement for the venerable ls command. It is a community fork of the now-unmaintained exa, written in Rust, and it ships with sensible defaults, colour-coded output, file type icons, tree views and first-class Git integration. If you spend a lot of time in the terminal, eza turns a bland directory listing into something you can actually read at a glance.

The trouble is that eza moves quickly and the official Debian repositories tend to lag behind, or omit it entirely on older releases. Compiling it yourself means pulling in a full Rust toolchain and remembering to rebuild every time a new version lands, which is exactly the kind of maintenance chore most people would rather avoid.

The unofficial deb.griffo.io repository solves this neatly. It provides an up-to-date, prebuilt .deb package for eza that installs with plain apt and updates alongside the rest of your system.

What Makes eza Special?

  • 🎨 Colour-coded output - files, directories, symlinks and executables are colourised by type out of the box
  • 🌳 Recursive tree view - the --tree flag renders directory hierarchies without needing a separate tree binary
  • 🔀 Git-aware listings - --git shows the Git status of each file directly in the listing
  • 📁 File type icons - --icons adds Nerd Font glyphs so directories, archives and source files are instantly recognisable
  • 📊 Human-friendly metadata - readable file sizes, extended attributes and inline permission grids
  • ⚡ Fast and lightweight - written in Rust, it starts instantly even in large directories
  • 🧩 Drop-in familiarity - the flags map closely to ls, so muscle memory mostly carries over
  • 🔧 Actively maintained - a healthy community keeps it patched and moving, unlike the abandoned exa

Why Use the deb.griffo.io Repository?

  • Easy installation and updates straight through the APT package manager you already use
  • Automatic dependency management handled entirely by Debian packaging
  • Always tracks upstream releases so you get new eza features without waiting on the official archive
  • No compiling from source and no need to install or maintain a Rust toolchain
  • Works across supported Debian releases including Bookworm, Trixie and Sid

Prerequisites

Before you start, make sure you have:

  • A Debian-based system (Bookworm 12, Trixie 13, or Sid)
  • sudo privileges
  • curl installed (run sudo apt install curl if it is missing)

Step 1: Add the deb.griffo.io Repository

First, add the repository’s GPG key and source entry. Run the following in your terminal:

# Create the keyrings directory
sudo install -d -m 0755 /etc/apt/keyrings

# Download and install the repository GPG key
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg

# Add the repository (auto-detects your distro codename)
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null

# Update the package list
sudo apt update

Here is what each command does:

  1. Create the keyrings directory - ensures /etc/apt/keyrings exists with the correct permissions for storing the signing key.
  2. Install the GPG key - downloads the repository’s public key and dearmors it into a keyring APT can verify against.
  3. Add the repository - writes the source entry, using lsb_release -sc to fill in your Debian codename automatically.
  4. Update the package list - refreshes APT so it knows about the newly available packages.

Step 2: Update the Package List

If you skipped the final command above, refresh the package index now:

sudo apt update

Step 3: Install eza

Install eza with a single command:

sudo apt install eza

APT will pull down the latest packaged version along with any required dependencies.

Step 4: Verify the Installation

Confirm eza is installed and on your PATH:

eza --version

You should see output similar to:

eza - A modern, maintained replacement for ls
v0.21.3 [+git]
https://github.com/eza-community/eza

Getting Started with eza

With eza installed, here are the features you will reach for most often.

Everyday Listings

eza works as a direct stand-in for ls, with a few flags that make the output far more useful:

# Simple listing
eza

# Long format with metadata
eza -l

# Include hidden dotfiles
eza -la

# Sort by size, largest last, with human-readable sizes
eza -l --sort=size

# Sort by modification time, newest last
eza -l --sort=modified

Icons and the Tree View

Two of eza’s standout features are file type icons and the built-in recursive tree. Icons require a Nerd Font installed and selected in your terminal:

# Long listing with icons
eza -l --icons

# Recursive tree of the current directory
eza --tree

# Limit the tree depth to two levels
eza --tree --level=2

# Tree with icons, ignoring node_modules
eza --tree --icons --ignore-glob="node_modules"

Git Integration

If you are inside a Git repository, eza can annotate each file with its Git status:

# Long listing with a Git status column
eza -l --git

# Combine Git status, icons and a header row
eza -l --git --icons --header

The status column marks new, modified and ignored files, which makes it easy to spot uncommitted work without switching to git status.

Handy Shell Aliases

Most people alias eza over ls so the improved output becomes the default. Add these to your ~/.bashrc (or ~/.zshrc):

# ~/.bashrc
alias ls='eza --icons --group-directories-first'
alias ll='eza -l --icons --git --group-directories-first'
alias la='eza -la --icons --git --group-directories-first'
alias lt='eza --tree --level=2 --icons'

Reload your shell with source ~/.bashrc and your usual ls, ll and la commands will now render eza’s colourised, Git-aware listings.

Keeping eza Updated

Because eza is installed through APT, updating it is part of your normal system maintenance:

sudo apt update && sudo apt upgrade

Whenever a new eza release is packaged upstream, this pulls it in automatically.

Other Tools from deb.griffo.io

The deb.griffo.io repository packages plenty of other modern command-line tools for Debian:

  • zoxide - a smarter cd that learns your most-used directories
  • fzf - a blazing-fast command-line fuzzy finder
  • starship - a minimal, customisable prompt for any shell
  • lazygit - a terminal UI that makes Git a pleasure to use

Troubleshooting

GPG or Key Issues

If APT complains that the repository is not signed or the key cannot be verified, re-add the signing key:

# Re-download and install the repository GPG key
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg

# Refresh the package list
sudo apt update

Package Not Found

If APT reports that it cannot find the eza package:

  1. Make sure you ran sudo apt update after adding the repository.
  2. Confirm your Debian release is supported (Bookworm, Trixie or Sid).
  3. Inspect the source entry to check it was written correctly:
cat /etc/apt/sources.list.d/deb.griffo.io.list

Icons Show as Boxes or Question Marks

If --icons renders empty boxes or question marks, your terminal is not using a font that includes the required glyphs. Install a Nerd Font, select it in your terminal’s font settings, and restart the terminal. Until then, simply drop the --icons flag and the rest of eza’s output still works perfectly.

Uninstalling

To remove eza:

sudo apt remove eza

If you also want to remove the repository itself:

sudo rm /etc/apt/sources.list.d/deb.griffo.io.list
sudo rm /etc/apt/keyrings/deb.griffo.io.gpg
sudo apt update

Remember to remove any eza aliases you added to your shell configuration.

Conclusion

eza is one of those small upgrades that pays for itself every single day. Colourised output, icons, a built-in tree view and inline Git status make directory listings genuinely informative rather than a wall of monochrome text, and because the flags mirror ls, adopting it costs almost nothing.

Installing it through the deb.griffo.io repository means you get a current build with a single apt install, and future updates arrive alongside the rest of your Debian packages. Set up a couple of aliases and you will wonder how you tolerated plain ls for so long.

Resources


Disclaimer: The deb.griffo.io repository is an unofficial community project and is not affiliated with the official Debian or Ubuntu projects, or with the upstream eza project.