9b87ef1da2
This commit changes all the views to accommodate printing each path's prefix, if it has one. Previously, each file was stripped of its ancestry, leaving only its file name to be displayed. So running "exa /usr/bin/*" would display only filenames, while running "ls /usr/bin/*" would display each file prefixed with "/usr/bin/". But running "ls /usr/bin/" -- without the glob -- would run ls on just the directory, printing out the file names with no prefix or anything. This functionality turned out to be useful in quite a few situations: firstly, if the user passes in files from different directories, it would be hard to tell where they came from (especially if they have the same name, such as find | xargs). Secondly, this also applied when following symlinks, making it unclear exactly which file a symlink would be pointing to. The reason that it did it this way beforehand was that I didn't think of these use-cases, rather than for any technical reason; this new method should not have any drawbacks save making the output slightly wider in a few cases. Compatibility with ls is also a big plus. Fixes #104, and relates to #88 and #92. |
||
---|---|---|
contrib | ||
src | ||
.gitignore | ||
.travis.yml | ||
Cargo.lock | ||
Cargo.toml | ||
generate-testcases.sh | ||
LICENCE | ||
Makefile | ||
README.md | ||
screenshots.png |
exa
exa is a replacement for ls
written in Rust.
Works on all recent Rust versions >= 1.4.0.
Screenshots
Options
exa’s options are similar, but not exactly the same, as ls
.
Display Options
- -1, --oneline: display one entry per line
- -G, --grid: display entries in a grid view (default)
- -l, --long: display extended details and attributes
- -R, --recurse: recurse into directories
- -T, --tree: recurse into subdirectories in a tree view
- -x, --across: sort multi-column view entries across
- --color, --colour: when to colourise the output
Filtering Options
- -a, --all: show dot files
- -d, --list-dirs: list directories as regular files
- -L, --level=(depth): maximum depth of recursion
- -r, --reverse: reverse sort order
- -s, --sort=(field): field to sort by
- --group-directories-first: list directories before other files
Long View Options
These options are available when running with --long (-l
):
- -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
- -h, --header: show a header row
- -H, --links: show number of hard links column
- -i, --inode: show inode number column
- -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
- --git: show Git status for a file
Accepted --color options are always, automatic, and never. Valid sort fields are name, size, extension, modified, accessed, created, inode, and none. Valid time fields are modified, accessed, and created.
Installation
exa is written in Rust.
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 running cargo build --release --no-default-features
.
Cargo Install
If you're using a recent version of Cargo (0.5.0 or higher), you can
use the cargo install
command:
cargo install --git https://github.com/ogham/exa
or:
cargo install --no-default-features --git https://github.com/ogham/exa
Cargo will clone the repository to a temporary directory, build it
there and place the exa
binary to: $HOME/.cargo
(and can be
overridden by setting the --root
option).