exa

A modern replacement for ls.

You list files hundreds of times a day. Why spend your time squinting at black and white text?

exa is an improved file lister with more features and better defaults. It uses colours to distinguish file types and metadata. It knows about symlinks, extended attributes, and Git. And it’s small, fast, and just one single binary.

Most recent version:
v0.10.1, released on April 12th

exa --long --header --git
Permissions Size User Date Modified Git Name
.rw-r--r--  1.9k ben   1 Feb  3:14   -- build.rs
.rw-r--r--   19k ben  16 Mar 17:36   -M Cargo.lock
.rw-r--r--  1.1k ben  15 Mar 23:25   -- Cargo.toml
drwxr-xr-x     - ben  15 Mar 23:25   -- contrib
drwxr-xr-x     - ben   1 Feb  3:14   -- devtools
.rwxr-xr-x  1.4M ben   1 Feb  3:14   -- exa-linux-x86_64
.rwxr-xr-x  1.2M ben   1 Feb  3:15   -- exa-macos-x86_64
.rw-r--r--  1.1k ben   1 Feb  3:15   -- LICENCE
.rw-r--r--  3.1k ben   1 Feb  3:15   -- Makefile
.rw-r--r--   102 ben   1 Feb  3:15   -- MD5SUMS
.rw-r--r--  6.0k ben   1 Feb  3:15   -- README.md
.rw-r--r--  454k ben   1 Feb  3:15   -- screenshots.png
.rw-r--r--   118 ben   1 Feb  3:15   -- SHA1SUMS
drwxr-xr-x     - ben  30 Apr 17:39   -N src
drwxr-xr-x     - ben  16 Mar 17:32   -- target
.rw-r--r--   24k ben  16 Mar 17:58   -M Vagrantfile
drwxr-xr-x     - ben   1 Feb  3:16   -- xtests

All the colours Different types of file and data will be coloured differently, and the user and group columns will be highlighted for the current user.

All the information exa can display a file’s extended attributes, as well as standard filesystem information such as the inode, the number of blocks, and a file’s various dates and times.

It’s fast exa queries files in parallel, giving you performance on par with ls.

Tree view Not only is the standard tree tool built-in, but it’ll show you your files’ information alongside the hierarchy.

Git support View the staged and unstaged status of every file, right there in the standard view. Also works in tree view for a high-level overview of your repository.

Wide view How many columns can you display in your terminal at once? How many do you need?

All downloads Compile from source
Arch Debian Fedora Gentoo macOS NixOS openSUSE Ubuntu
pacman -S exa

On Arch, install the exa package.

apt install exa

On Debian, install the exa package. For now, exa is in the unstable repository.

dnf install exa

On Fedora, install the rust-exa package.

emerge sys-apps/exa

On Gentoo, install the sys-apps/exa package.

brew install exa

If you have Homebrew installed, download and install the exa formula.

nix-env -i exa

On NixOS, install the exa package.

zypper install exa

On openSUSE, install the exa package.

apt install exa

On Ubuntu 20.10 (Groovy Gorilla) and later, install the exa package.

Select your OS for
more specific instructions

If you have the right programs installed, you can build the latest development version from source.

  1. Download and install Rust for your platform.
  2. Install libgit2 and cmake.
  3. To download the latest version, run: git clone https://github.com/ogham/exa.git
  4. Run make install in the new directory to compile and install exa into /usr/local/bin.

Is this a drop-in replacement for ls?

No — exa has, in my opinion, much saner defaults than ls, so while the available command-line options are similar, they are not exactly the same. Most of the common options will work consistently, though. For example, exa prints human-readable file sizes by default, so the -h option no longer applies.

Why would I want Git in my file listing anyway?

Because you get to see the Git information alongside everything else. Yes, it’s already trivial to just run git status when you’re in your shell. But when you need to double-check exactly which files have been staged, you really need to see it clearly!

Windows support?

Very soon now. It is looking highly likely that the current version of exa (v0.10.0) will be the last without Windows support.

What licence does exa use?

It uses the MIT licence. The code is open-source — development happens over on GitHub, and contributions are gratefully accepted!