How to install eza and zoxide: modern ls, smart cd, shell aliases

Install eza and zoxide, alias modern listings, and jump dirs with z.

Default ls -la and long cd paths eat attention in every terminal session. eza is a modern ls with colors, Git status, and tree views; zoxide learns directories you visit so z foo jumps without typing the full path.

Searchers looking for install eza zoxide smart cd shell aliases need: install both CLIs on macOS/Linux, run zoxide init in zsh/bash, and wire a few alias lines for ll and listing. Follow the GitHub READMEs for eza-community/eza and ajeetdsouza/zoxide.

Install eza · zoxideinit shell · try z / ezaaliases · tree · pair with fzf

Who this helps

01

Developers on many repos

eza --git surfaces untracked files; zoxide hops between ~/src/acme/web and ~/work/acme-api without endless tab completion.

02

New machine setup

Drop aliases in ~/.zshrc and every new terminal gets modern listing plus smart cd. The zoxide database lives locally — back it up with dotfiles.

03

People still on plain ls/cd

Adopt gradually: use eza only as ll, keep plain cd until z feels reliable; optional alias cd='z' later.

Install eza and zoxide

  1. 1

    macOS: Homebrew

    brew install eza zoxide. Open a new terminal and run eza --version and zoxide --version.

  2. 2

    Debian / Ubuntu

    Some releases ship eza in apt; otherwise use cargo or release binaries per the eza README. Install zoxide via the README install script or apt install zoxide when available.

  3. 3

    Fedora / Arch

    Typical: sudo dnf install eza zoxide or sudo pacman -S eza zoxide. Verify with --version.

  4. 4

    Enable zoxide (required)

    Add eval "$(zoxide init zsh)" or eval "$(zoxide init bash)" to your rc file, then source it. For fish: zoxide init fish | source.

Use eza as a modern ls

Common flags (see eza README):

eza -l --git --icons
eza -T --level=2
eza -la --sort=modified

Prefer aliases instead of replacing system ls globally:

alias ls='eza --icons'
alias ll='eza -la --git --icons'
alias lt='eza -T --level=2 --icons'

zoxide: smart cd basics

  1. 1

    cd normally first

    zoxide scores paths you visit. After a few trips to a project root, z fragment gets accurate.

  2. 2

    z and zi

    z web jumps to the best match; zi opens interactive pick (often needs fzf — see docs).

  3. 3

    Optional: alias cd

    alias cd='z' sends every cd through zoxide; skip this if scripts rely on classic cd behavior.

  4. 4

    Inspect and prune

    zoxide query lists scores; zoxide remove path drops bad entries. The DB is per user — see FAQ for backup.

ToolReplacesTypical use
ezals -lall, eza -T
zoxideLong cdz foo, zi
aliasRepeated flagsalias ..='cd ..'

zoxide handles directory jumps, not file search — keep fzf or find for paths. Pair with Atuin/fzf for history: eza for the current folder, zoxide for favorites, fzf for pickers.

To pair on dotfiles or project paths, open a browser room from the wbroom homepage — create and join a room.

Questions worth checking

How does eza relate to exa?

eza continues the exa lineage as a modern ls. Do not enable two competing aliases — pick one binary.

Do I install zoxide on SSH hosts too?

Yes — z is a shell hook on each machine. Remote sessions need zoxide installed and initialized there; databases are local unless you add sync.

zsh or bash rc file?

Match your login shell (echo $SHELL): ~/.zshrc for zsh, ~/.bashrc for bash (macOS login bash may use ~/.bash_profile).

Conflict with autojump or fzf Alt+C?

Pick one jump tool (autojump vs zoxide). fzf Alt+C is ad-hoc directory pick; zoxide learns frequency — they can coexist on different keys.

Start a meeting