A modern replacement for ‘ls’.
Go to file
Ben S adbaa51cb9 Use new io + path + fs libraries (LOTS OF CHANGES)
Exa now uses the new IO, Path, and Filesystem libraries that have been out for a while now.

Unfortunately, the new libraries don't *entirely* cover the range of the old libraries just yet: in particular, to become more cross-platform, the data in `UnstableFileStat` isn't available in the Unix `MetadataExt` yet. Much of this is contained in rust-lang/rfcs#1044 (which is due to be implemented in rust-lang/rust#14711), but it's not *entirely* there yet.

As such, this commits a serious loss of functionality: no symlink viewing, no hard links or blocks, or users or groups. Also, some of the code could now be optimised. I just wanted to commit this to sort out most of the 'teething problems' of having a different path system in advance.

Here's an example problem that took ages to fix for you, just because you read this far: when I first got exa to compile, it worked mostly fine, except calling `exa` by itself didn't list the current directory. I traced where the command-line options were being generated, to where files and directories were sorted, to where the threads were spawned... and the problem turned out to be that it was using the full path as the file name, rather than just the last component, and these paths happened to begin with `.`, so it thought they were dotfiles.
2015-04-23 13:00:34 +01:00
contrib add man page to PKGBUILD 2015-02-26 13:28:52 -06:00
man Add a man page entry for exa 2015-02-23 13:42:23 -05:00
src Use new io + path + fs libraries (LOTS OF CHANGES) 2015-04-23 13:00:34 +01:00
.gitignore Upgrade to latest ansi_term 2014-11-26 07:36:09 +00:00
.travis.yml Leverage new Travis support for Rust 2014-11-23 23:50:26 +00:00
Cargo.lock Use new io + path + fs libraries (LOTS OF CHANGES) 2015-04-23 13:00:34 +01:00
Cargo.toml Upgrade to latest Rust 2015-04-04 00:14:56 +02:00
LICENCE Update LICENCE 2014-07-02 22:07:09 +01:00
Makefile Add simple Makefile to build and install exa 2015-02-24 10:48:39 -05:00
README.md Add missing options to README 2015-04-10 22:18:44 +01:00
screenshot.png Use brighter colours in screenshot 2014-12-18 07:16:27 +00:00

exa Build status

exa is a replacement for ls written in Rust.

You'll have to use the nightly, rather than Rust beta. Sorry about that.

Screenshot

Screenshot of exa

Options

  • -1, --oneline: display one entry per line
  • -a, --all: show dot files
  • -b, --binary: use binary (power of two) file sizes
  • -B, --bytes: list file sizes in bytes, without prefixes
  • -d, --list-dirs: list directories as regular files
  • -g, --group: show group as well as user
  • --group-directories-first: list directories before other files
  • --git: show git status (depends on libgit2, see below)
  • -h, --header: show a header row
  • -H, --links: show number of hard links column
  • -i, --inode: show inode number column
  • -l, --long: display extended details and attributes
  • -L, --level=(depth): maximum depth of recursion
  • -m, --modified: display timestamp of most recent modification
  • -r, --reverse: reverse sort order
  • -R, --recurse: recurse into subdirectories
  • -s, --sort=(field): field to sort by
  • -S, --blocks: show number of file system blocks
  • -t, --time=(field): which timestamp to show for a file
  • -T, --tree: recurse into subdirectories in a tree view
  • -u, --accessed: display timestamp of last access for a file
  • -U, --created: display timestamp of creation of a file
  • -x, --across: sort multi-column view entries across
  • -@, --extended: display extended attribute keys and sizes

You can sort by name, size, ext, inode, modified, created, accessed, or none.

Installation

exa is written in Rust. You'll have to use the nightly -- I try to keep it up to date with the latest version when possible. Once you have it set up, a simple make install will compile exa and install it into /usr/local/bin.

exa depends on libgit2 for certain features. If you're unable to compile libgit2, you can opt out of Git support by passing --no-default-features to Cargo.