What Is eza and Why Would You Use It Instead of ls?

Updated

eza is a modern, maintained replacement for ls, the file-listing command that ships with Unix and Linux systems. It is written in Rust and distributed as a single binary. You would use it instead of ls if you want more features and better defaults out of the box — colored output that distinguishes file types and metadata, awareness of symlinks, extended attributes, and Git status, plus a set of fixes and additions that the older exa project lacks. It runs on Windows, macOS, Linux, and BSDs.

What eza actually changes

The core job is the same as ls: list directory contents. The difference is in defaults and scope.

  • Colour by default. eza uses colours to distinguish file types and metadata, rather than leaving that to configuration.
  • Knows more about files. It understands symlinks, extended attributes, and Git repositories, so it can surface information ls does not show directly.
  • Single binary. No runtime or dependency chain to manage — one executable.
  • Maintained. The project is actively developed, which matters if you were previously looking at exa.

eza vs. exa

If you have heard of exa, eza is the maintained continuation with fixes and additions. The project lists these features as not present in exa:

  • Fixes "The Grid Bug" introduced in exa in 2021
  • Hyperlink support
  • Mount point details
  • SELinux context output
  • Git repo status output
  • Human-readable relative dates
  • Several security fixes
  • Support for bright terminal colours
  • Many smaller bug fixes and changes

If you are choosing between the two today, eza is the one receiving maintenance.

How to try it without installing

If you already have Nix set up with flake support, you can run eza directly:

nix run github:eza-community/eza

Nix builds eza and runs it. To pass arguments through, use --:

nix run github:eza-community/eza -- -ol .

How to install it

Pick the route that matches your system.

Cargo (crates.io)

If you have a Rust environment:

cargo install eza

Cargo builds the binary and places it in $HOME/.local/share/cargo/bin/eza.

Cargo from a local clone

git clone https://github.com/eza-community/eza.git
cd eza
cargo install --path .

This places the binary in $HOME/.cargo.

Arch Linux

eza is in the [extra] repository:

pacman -S eza

Debian and Ubuntu

eza is available from deb.gierens.de. The GPG public key is in the repo under deb.asc. First ensure gpg is present:

sudo apt update
sudo apt install -y gpg

Then add the key and repository, and install:

sudo mkdir -p /etc/apt/keyrings
wget -qO- https://raw.githubusercontent.com/eza-community/eza/main/deb.asc | sudo gpg --dearmor -o /etc/apt/keyrings/gierens.gpg
echo "deb [signed-by=/etc/apt/keyrings/gierens.gpg] http://deb.gierens.de stable main" | sudo tee /etc/apt/sources.list.d/gierens.list
sudo chmod 644 /etc/apt/keyrings/gierens.gpg /etc/apt/sources.list.d/gierens.list
sudo apt update
sudo apt install -y eza

Nix (Linux, macOS)

From Nixpkgs, for nix profile users:

nix profile install nixpkgs#eza

For nix-env users:

nix-env -i eza

Gentoo

eza is available on Gentoo as well.

When eza is the right choice

Choose eza if you want a drop-in-feeling replacement for ls that shows more by default and is actively maintained — particularly if you care about Git status in listings, hyperlinks, or SELinux context. If you only need plain file names and are happy with your current ls configuration, there is no functional gap forcing a switch. The practical reason to adopt it is the combination of better defaults and ongoing maintenance rather than a single missing feature.