eza: ls That Finally Grew Up

ls has been good enough for forty years. eza is what happens when someone decides good enough is not the ceiling.

eza (the maintained successor to exa) keeps ls muscle memory and adds what you always wanted: git status next to dirty files, a real tree mode without installing tree, human sizes, and dates you can read. It is a lister, not a file manager. If you live in git repos, seeing modified files without a separate git status is a tiny tax cut that compounds all day.

install

macOS
# macOS
brew install eza
Debian/Ubuntu
# Debian/Ubuntu
sudo apt install eza
Fedora
# Fedora
sudo dnf install eza
Arch
# Arch
sudo pacman -S eza

examples

# Long listing with git status (M/A/? next to dirty files)
eza -la --git
# Tree one level deep — orient in a new repo fast
eza --tree --level=1
# Newest first (the flag you always forget on classic ls)
eza -l --sort=modified --reverse
# Directories only
eza -D
# Ignore noise globs
eza -la --git --ignore-glob='.git|node_modules|__pycache__'
# Shell aliases (zsh/bash)
alias ls='eza'
alias ll='eza -la --git'
alias lt='eza --tree --level=2' 

pro tip

Pair eza with zoxide and fd: z jumps directories, eza -la --git shows state, fd finds the file. Three tools, one calm loop. --git is a no-op outside a work tree — no errors, no drama.

honest limits

eza is not an interactive browser (use yazi/nnn/lf for that). --icons needs a Nerd Font; leave icons off on bare servers. Scripts that parse ls -l columns may break — keep /bin/ls in automation until you rewrite parsers. On locked-down remotes without eza, do not build aliases you cannot take with you.