$ exa
Cargo.toml LICENCE README.md screenshot.png src target
$ exa -l
.rw-r--r-- 9.6k ben 29 Jun 16:16 Cargo.lock
.rw-r--r-- 547 ben 23 Jun 10:54 Cargo.toml
.rw-r--r-- 1.1k ben 23 Nov 2014 LICENCE
.rw-r--r-- 2.5k ben 21 May 14:38 README.md
.rw-r--r-- 382k ben 8 Jun 21:00 screenshot.png
drwxr-xr-x - ben 29 Jun 14:50 src
drwxr-xr-x - ben 28 Jun 19:53 target
$ exa -bghHliS
inode Permissions Links Size Blocks User Group Date Modified Name
21214836 .rw-r--r-- 1 9.4Ki 24 ben staff 29 Jun 16:16 Cargo.lock
19896082 .rw-r--r-- 1 547 8 ben staff 23 Jun 10:54 Cargo.toml
1971322 .rw-r--r-- 1 1.1Ki 8 ben staff 23 Nov 2014 LICENCE
19134861 .rw-r--r-- 1 2.4Ki 8 ben staff 21 May 14:38 README.md
20087308 .rw-r--r-- 1 373Ki 752 ben staff 8 Jun 21:00 screenshot.png
1971325 drwxr-xr-x 12 - - ben staff 29 Jun 14:50 src
21150214 drwxr-xr-x 4 - - ben staff 28 Jun 19:53 target
Features
All the colours: When dealing with pages and pages of information, it’s nice to be able to distinguish individual fields by colour. Different types of file and data will be coloured differently, and colours in the user and group columns will reflect whether you are the file’s owner, or are in the owning group.
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.
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.
It’s fast: exa queries files in parallel, giving you performance on par with ls.
Installation Instructions
The easiest way to get exa is to download a binary for your platform and place it in a directory within your $PATH, such as /usr/local/bin. The binary is entirely self-contained, so that’s all you need.
From a Package Manager
If you’re on a Mac with Homebrew, then you can run:
brew install exa
If you’re on Arch Linux with Yaourt, then you can run:
yaourt -S exa-git
If your OS isn’t listed here, then you’ll have to download and install the binary yourself. Such is life.
From Source
If you’re brave and have development tools installed, you can build the latest development version from source.
- Download and install Rust for your platform.
- Install
libgit2andcmake. - To download the latest version, run:
git clone https://github.com/ogham/exa.git - Run
make installin the new directory to compile and install exa into/usr/local/bin.
FAQ
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 (when would you not want that?) so ls -h 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?
Sorry, not yet — although Rust is cross-platform, I don’t have a Windows machine to develop on, and a few Unix-isms are still present here and there. I don’t want to release v1.0 without Windows support, though.
What licence is the code under?
It uses the MIT licence.