A modern replacement for ‘ls’.
Go to file
Ben S ccdf9ff4a6 Add --grid --long option
This commit adds --grid, which, when used with --long, will split the details into multiple columns. Currently this is just 2 columns, but in the future it will be based on the width of the terminal.

In order to do this, I had to do two things:

1. Add a `links` parameter to the filename function, which disables the printing of the arrow and link target in the details view. When this is active, the columns get way too large, and it becomes not worth it.
2. Change the `print_table` function from actually printing the table to stdout to returning a list of `Cells` based on the table. This list then gets its width measured to calculate the width of the resulting table.
2015-06-28 13:21:21 +01:00
contrib Update man page with new options 2015-06-07 16:45:58 +01:00
src Add --grid --long option 2015-06-28 13:21:21 +01:00
.gitignore Upgrade to latest ansi_term 2014-11-26 07:36:09 +00:00
.travis.yml Have to use the nightly on Travis now 2015-05-21 14:38:45 +01:00
Cargo.lock Versions bump 2015-06-28 06:17:00 +01:00
Cargo.toml Use term_grid crate for grid formatting 2015-06-23 10:54:57 +01:00
LICENCE Update LICENCE 2014-07-02 22:07:09 +01:00
Makefile Update man path in Makefile 2015-06-07 16:52:28 +01:00
README.md The beta isn't the only Rust around! 2015-05-20 17:59:00 +01:00
screenshot.png Show off new tree functionality 2015-06-08 21:01:02 +01:00

exa Build status

exa is a replacement for ls written in Rust.

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

Screenshot

Screenshot of exa

Options

exa's options are similar, but not exactly the same, as ls.

Filtering Options

  • -a, --all: show dot files
  • -d, --list-dirs: list directories as regular files
  • --group-directories-first: list directories before other files
  • -L, --level=(depth): maximum depth of recursion
  • -R, --recurse: recurse into subdirectories

View Options

  • -1, --oneline: display one entry per line
  • -r, --reverse: reverse sort order
  • -s, --sort=(field): field to sort by
  • -x, --across: sort multi-column view entries across
  • -T, --tree: recurse into subdirectories in a tree view

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

Long Format

  • -b, --binary: use binary (power of two) file sizes
  • -B, --bytes: list file sizes in bytes, without prefixes
  • -g, --group: show group as well as user
  • --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
  • -m, --modified: display timestamp of most recent modification
  • -S, --blocks: show number of file system blocks
  • -t, --time=(field): which timestamp to show for a file
  • -u, --accessed: display timestamp of last access for a file
  • -U, --created: display timestamp of creation of a file
  • -@, --extended: display extended attribute keys and sizes

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.