How to Install eza on Ubuntu: A Modern Replacement for ls
If your terminal listings still look like they did in the 1990s, eza is the fix. It is a modern, actively maintained replacement for ls, written in Rust, that brings colour, file type icons, a recursive tree view and inline Git status to a command you probably run hundreds of times a day. It began life as a community fork of the unmaintained exa project and has grown into a polished, well-supported tool of its own.
Ubuntu does ship an eza package in some releases, but the version in the archive is frequently a release or two behind upstream, and on older LTS releases it may be missing altogether. Building from source works but drags in the entire Rust toolchain and leaves you responsible for every future upgrade.
The unofficial deb.griffo.io repository takes that burden away. It packages a current build of eza as a proper .deb, so you install it with apt and keep it current through your normal system updates.
What Makes eza Special?
- 🎨 Colour-coded output - directories, symlinks, executables and regular files are colourised automatically
- 🌳 Built-in tree view -
--treedraws the directory hierarchy with no separatetreepackage required - 🔀 Git-aware columns -
--gitsurfaces the Git status of every file inside the listing - 📁 Nerd Font icons -
--iconsprefixes entries with glyphs so file types are recognisable at a glance - 📊 Readable metadata - human-friendly sizes, permission grids and extended attribute support
- ⚡ Rust-fast - near-instant startup even when listing very large directories
- 🧩 Familiar flags - closely mirrors
ls, so most of your habits transfer straight over - 🔧 Community-maintained - regular releases and fixes, unlike the abandoned
exa
Why Use the deb.griffo.io Repository?
- Easy installation and updates through the standard APT workflow
- Automatic dependency management courtesy of Debian-style packaging
- Always tracks upstream releases so new eza versions land without waiting on the Ubuntu archive
- No compiling from source and no Rust toolchain to install or maintain
- Works across supported Ubuntu releases including the current LTS versions
Prerequisites
Make sure the following are in place before you begin:
- An Ubuntu system (Jammy 22.04 LTS, Noble 24.04 LTS, or newer)
sudoprivilegescurlinstalled (install it withsudo apt install curlif needed)
Step 1: Add the deb.griffo.io Repository
Add the GPG key and the APT source entry with the commands below:
# 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
Step by step, these commands:
- Create the keyrings directory so
/etc/apt/keyringsexists with the right permissions for the signing key. - Install the GPG key, dearmoring it into a dedicated keyring that APT uses to verify packages.
- Register the repository, letting
lsb_release -scsubstitute your Ubuntu codename automatically. - Update the index so APT picks up the packages the repository provides.
Step 2: Update the Package List
If you have not already refreshed the index, do so now:
sudo apt update
Step 3: Install eza
Install the package directly:
sudo apt install eza
APT fetches the latest packaged eza and resolves any dependencies for you.
Step 4: Verify the Installation
Check that eza is available and reporting a sensible version:
eza --version
The output should look something like:
eza - A modern, maintained replacement for ls
v0.21.3 [+git]
https://github.com/eza-community/eza
Getting Started with eza
Here are the most useful things to try now that eza is installed.
Git Integration
Inside a Git repository, eza can annotate each file with its Git status, which is one of the most compelling reasons to switch:
# Long listing with a Git status column
eza -l --git
# Add a header row and icons alongside the Git column
eza -l --git --icons --header
New, modified and ignored files are flagged inline, so you can review a directory’s state without a separate git status call.
Icons and Tree Views
eza can render file type icons and draw directory trees without any extra tooling. Icons rely on a Nerd Font being active in your terminal:
# Long listing with icons
eza -l --icons
# Recursive tree of the current directory
eza --tree
# Cap the tree at three levels deep
eza --tree --level=3
# Tree view that skips build artefacts
eza --tree --icons --ignore-glob="node_modules|dist"
Everyday Listings
For day-to-day use, eza slots straight into the places you would normally type ls:
# Basic listing
eza
# Long format with metadata
eza -l
# Include hidden files
eza -la
# Sort by size with human-readable figures
eza -l --sort=size
# Directories grouped before files
eza -l --group-directories-first
Handy Shell Aliases
To make eza your default, alias it over ls and friends. Add the following to ~/.bashrc (or ~/.zshrc if you use Zsh):
# ~/.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'
Run source ~/.bashrc to apply them, and your familiar commands will now produce eza’s richer output.
Keeping eza Updated
Since eza comes from an APT repository, keeping it current is just part of your normal update routine:
sudo apt update && sudo apt upgrade
Any newly packaged eza release is pulled in automatically.
Other Tools from deb.griffo.io
The deb.griffo.io repository offers a whole toolbox of modern command-line utilities for Ubuntu:
- bun - a fast all-in-one JavaScript runtime and toolkit
- zoxide - a smarter
cdthat remembers where you go - starship - a fast, minimal prompt for any shell
- lazygit - a friendly terminal UI for Git
Troubleshooting
Package Not Found
If APT cannot locate the eza package after adding the repository:
- Confirm you ran
sudo apt updateonce the repository was in place. - Check that your Ubuntu release is supported (Jammy, Noble or newer).
- Verify the source entry is correct:
cat /etc/apt/sources.list.d/deb.griffo.io.list
GPG or Key Issues
A NO_PUBKEY or signature verification error usually means the key needs re-adding. Reinstall it and refresh:
# 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
Icons Render as Blank Boxes
If the --icons output shows tofu boxes or question marks, your terminal font lacks the necessary glyphs. Download and install a Nerd Font, select it in your terminal preferences, then restart the terminal. In the meantime you can simply omit --icons and every other feature continues to work.
Uninstalling
Remove the package with:
sudo apt remove eza
To tear down the repository entirely as well:
sudo rm /etc/apt/sources.list.d/deb.griffo.io.list
sudo rm /etc/apt/keyrings/deb.griffo.io.gpg
sudo apt update
Don’t forget to strip out any eza aliases you added to your shell configuration.
Conclusion
eza is a low-risk, high-reward upgrade to a command you already use constantly. With colourised output, optional icons, an integrated tree view and inline Git status, it turns directory listings from noise into information, and its ls-compatible flags mean there is barely any learning curve.
Installed via the deb.griffo.io repository, eza on Ubuntu is a single apt install away and stays current through your normal upgrades. Add a couple of aliases, reload your shell, and enjoy listings that actually tell you something.
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.