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
lsdoes 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.