mirror of
https://github.com/Llewellynvdm/exa.git
synced 2024-12-28 02:35:03 +00:00
A modern replacement for ‘ls’.
7f980935c5
This makes use of a change in the `users` crate to change which parts of exa's code are accessed under a `Mutex`. The change is that the methods on `Users` can now take just `&self`, instead of `&mut self`. This has a knock-on effect in exa, as many methods now don't need to take a mutable `&self`, meaning that the Mutex can be moved to only containing the users information instead of having to be queried for *every column*. This means that threading should now be a lot faster, as fewer parts have to be executed on a single thread. The main change to facilitate this is that `Table`'s structure has changed: everything environmental that gets loaded at the beginning is now in an `Environment` struct, which can be mocked out if necessary, as one of `Table`'s fields. (They were kind of in a variety of places before.) Casualties include having to make some of the test code more verbose, as it explicitly takes the columns and environment as references rather than values, and those both need to be put on the stack beforehand. Also, all the colours are now hidden behind an `opts` field, so a lot of the rendering code is more verbose too (but not greatly so). |
||
---|---|---|
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
.