|
@@ -1,8 +1,8 @@
|
|
|
<div align="center">
|
|
<div align="center">
|
|
|
|
|
|
|
|
-# exa
|
|
|
|
|
|
|
+# eza
|
|
|
|
|
|
|
|
-[exa](https://the.exa.website/) is a modern replacement for _ls_.
|
|
|
|
|
|
|
+eza is a modern replacement for _ls_.
|
|
|
|
|
|
|
|
**README Sections:** [Options](#options) — [Installation](#installation) — [Development](#development)
|
|
**README Sections:** [Options](#options) — [Installation](#installation) — [Development](#development)
|
|
|
|
|
|
|
@@ -14,12 +14,12 @@
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-**exa** is a modern replacement for the venerable file-listing command-line program `ls` that ships with Unix and Linux operating systems, giving it more features and better defaults.
|
|
|
|
|
|
|
+**eza** is a modern replacement for the venerable file-listing command-line program `ls` that ships with Unix and Linux operating systems, giving it more features and better defaults.
|
|
|
It uses colours to distinguish file types and metadata.
|
|
It uses colours to distinguish file types and metadata.
|
|
|
It knows about symlinks, extended attributes, and Git.
|
|
It knows about symlinks, extended attributes, and Git.
|
|
|
And it’s **small**, **fast**, and just **one single binary**.
|
|
And it’s **small**, **fast**, and just **one single binary**.
|
|
|
|
|
|
|
|
-By deliberately making some decisions differently, exa attempts to be a more featureful, more user-friendly version of `ls`.
|
|
|
|
|
|
|
+By deliberately making some decisions differently, eza attempts to be a more featureful, more user-friendly version of `ls`.
|
|
|
For more information, see [exa’s website](https://the.exa.website/).
|
|
For more information, see [exa’s website](https://the.exa.website/).
|
|
|
|
|
|
|
|
|
|
|
|
@@ -29,7 +29,7 @@ For more information, see [exa’s website](https://the.exa.website/).
|
|
|
<h1>Command-line options</h1>
|
|
<h1>Command-line options</h1>
|
|
|
</a>
|
|
</a>
|
|
|
|
|
|
|
|
-exa’s options are almost, but not quite, entirely unlike `ls`’s.
|
|
|
|
|
|
|
+eza’s options are almost, but not quite, entirely unlike `ls`’s.
|
|
|
|
|
|
|
|
### Display options
|
|
### Display options
|
|
|
|
|
|
|
@@ -100,97 +100,17 @@ Some of the options accept parameters:
|
|
|
<h1>Installation</h1>
|
|
<h1>Installation</h1>
|
|
|
</a>
|
|
</a>
|
|
|
|
|
|
|
|
-exa is available for macOS and Linux.
|
|
|
|
|
-More information on how to install exa is available on [the Installation page](https://the.exa.website/install).
|
|
|
|
|
-
|
|
|
|
|
-### Alpine Linux
|
|
|
|
|
-
|
|
|
|
|
-On Alpine Linux, [enable community repository](https://wiki.alpinelinux.org/wiki/Enable_Community_Repository) and install the [`exa`](https://pkgs.alpinelinux.org/package/edge/community/x86_64/exa) package.
|
|
|
|
|
-
|
|
|
|
|
- apk add exa
|
|
|
|
|
-
|
|
|
|
|
-### Arch Linux
|
|
|
|
|
-
|
|
|
|
|
-On Arch, install the [`exa`](https://www.archlinux.org/packages/community/x86_64/exa/) package.
|
|
|
|
|
-
|
|
|
|
|
- pacman -S exa
|
|
|
|
|
-
|
|
|
|
|
-### Android / Termux
|
|
|
|
|
-
|
|
|
|
|
-On Android / Termux, install the [`exa`](https://github.com/termux/termux-packages/tree/master/packages/exa) package.
|
|
|
|
|
-
|
|
|
|
|
- pkg install exa
|
|
|
|
|
-
|
|
|
|
|
-### Debian
|
|
|
|
|
-
|
|
|
|
|
-On Debian, install the [`exa`](https://packages.debian.org/stable/exa) package.
|
|
|
|
|
-
|
|
|
|
|
- apt install exa
|
|
|
|
|
-
|
|
|
|
|
-### Fedora
|
|
|
|
|
-
|
|
|
|
|
-On Fedora, install the [`exa`](https://src.fedoraproject.org/modules/exa) package.
|
|
|
|
|
-
|
|
|
|
|
- dnf install exa
|
|
|
|
|
-
|
|
|
|
|
-### Gentoo
|
|
|
|
|
-
|
|
|
|
|
-On Gentoo, install the [`sys-apps/exa`](https://packages.gentoo.org/packages/sys-apps/exa) package.
|
|
|
|
|
-
|
|
|
|
|
- emerge sys-apps/exa
|
|
|
|
|
-
|
|
|
|
|
-### Homebrew
|
|
|
|
|
-
|
|
|
|
|
-If you’re using [Homebrew](https://brew.sh/) on macOS, install the [`exa`](http://formulae.brew.sh/formula/exa) formula.
|
|
|
|
|
-
|
|
|
|
|
- brew install exa
|
|
|
|
|
-
|
|
|
|
|
-### MacPorts
|
|
|
|
|
-
|
|
|
|
|
-If you're using [MacPorts](https://www.macports.org/) on macOS, install the [`exa`](https://ports.macports.org/port/exa/summary) port.
|
|
|
|
|
-
|
|
|
|
|
- port install exa
|
|
|
|
|
-
|
|
|
|
|
-### Nix
|
|
|
|
|
-
|
|
|
|
|
-On nixOS, install the [`exa`](https://github.com/NixOS/nixpkgs/blob/master/pkgs/tools/misc/exa/default.nix) package.
|
|
|
|
|
-
|
|
|
|
|
- nix-env -i exa
|
|
|
|
|
-
|
|
|
|
|
-### openSUSE
|
|
|
|
|
-
|
|
|
|
|
-On openSUSE, install the [`exa`](https://software.opensuse.org/package/exa) package.
|
|
|
|
|
-
|
|
|
|
|
- zypper install exa
|
|
|
|
|
-
|
|
|
|
|
-### Ubuntu
|
|
|
|
|
-
|
|
|
|
|
-On Ubuntu 20.10 (Groovy Gorilla) and later, install the [`exa`](https://packages.ubuntu.com/jammy/exa) package.
|
|
|
|
|
-
|
|
|
|
|
- sudo apt install exa
|
|
|
|
|
-
|
|
|
|
|
-### Void Linux
|
|
|
|
|
-
|
|
|
|
|
-On Void Linux, install the [`exa`](https://github.com/void-linux/void-packages/blob/master/srcpkgs/exa/template) package.
|
|
|
|
|
-
|
|
|
|
|
- xbps-install -S exa
|
|
|
|
|
-
|
|
|
|
|
-### Manual installation from GitHub
|
|
|
|
|
-
|
|
|
|
|
-Compiled binary versions of exa are uploaded to GitHub when a release is made.
|
|
|
|
|
-You can install exa manually by [downloading a release](https://github.com/ogham/exa/releases), extracting it, and copying the binary to a directory in your `$PATH`, such as `/usr/local/bin`.
|
|
|
|
|
-
|
|
|
|
|
-For more information, see the [Manual Installation page](https://the.exa.website/install/linux#manual).
|
|
|
|
|
|
|
+eza is available for macOS and Linux.
|
|
|
|
|
|
|
|
### Cargo
|
|
### Cargo
|
|
|
|
|
|
|
|
If you already have a Rust environment set up, you can use the `cargo install` command:
|
|
If you already have a Rust environment set up, you can use the `cargo install` command:
|
|
|
|
|
|
|
|
- cargo install exa
|
|
|
|
|
|
|
+ cargo install eza
|
|
|
|
|
|
|
|
-Cargo will build the `exa` binary and place it in `$HOME/.cargo`.
|
|
|
|
|
|
|
+Cargo will build the `eza` binary and place it in `$HOME/.cargo`.
|
|
|
|
|
|
|
|
-To build without Git support, run `cargo install --no-default-features exa` is also available, if the requisite dependencies are not installed.
|
|
|
|
|
|
|
+To build without Git support, run `cargo install --no-default-features eza` is also available, if the requisite dependencies are not installed.
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
---
|
|
@@ -207,11 +127,11 @@ To build without Git support, run `cargo install --no-default-features exa` is a
|
|
|
</a>
|
|
</a>
|
|
|
</h1></a>
|
|
</h1></a>
|
|
|
|
|
|
|
|
-exa is written in [Rust](https://www.rust-lang.org/).
|
|
|
|
|
|
|
+eza is written in [Rust](https://www.rust-lang.org/).
|
|
|
You will need rustc version 1.56.1 or higher.
|
|
You will need rustc version 1.56.1 or higher.
|
|
|
The recommended way to install Rust for development is from the [official download page](https://www.rust-lang.org/tools/install), using rustup.
|
|
The recommended way to install Rust for development is from the [official download page](https://www.rust-lang.org/tools/install), using rustup.
|
|
|
|
|
|
|
|
-Once Rust is installed, you can compile exa with Cargo:
|
|
|
|
|
|
|
+Once Rust is installed, you can compile eza with Cargo:
|
|
|
|
|
|
|
|
cargo build
|
|
cargo build
|
|
|
cargo test
|
|
cargo test
|
|
@@ -228,7 +148,7 @@ The `just man` command will compile the Markdown into manual pages, which it wil
|
|
|
To use them, copy them into a directory that `man` will read.
|
|
To use them, copy them into a directory that `man` will read.
|
|
|
`/usr/local/share/man` is usually a good choice.
|
|
`/usr/local/share/man` is usually a good choice.
|
|
|
|
|
|
|
|
-- exa depends on [libgit2](https://github.com/rust-lang/git2-rs) for certain features.
|
|
|
|
|
|
|
+- eza depends on [libgit2](https://github.com/rust-lang/git2-rs) for certain features.
|
|
|
If you’re unable to compile libgit2, you can opt out of Git support by running `cargo build --no-default-features`.
|
|
If you’re unable to compile libgit2, you can opt out of Git support by running `cargo build --no-default-features`.
|
|
|
|
|
|
|
|
- If you intend to compile for musl, you will need to use the flag `vendored-openssl` if you want to get the Git feature working.
|
|
- If you intend to compile for musl, you will need to use the flag `vendored-openssl` if you want to get the Git feature working.
|
|
@@ -239,13 +159,13 @@ For more information, see the [Building from Source page](https://the.exa.websit
|
|
|
|
|
|
|
|
### Testing with Vagrant
|
|
### Testing with Vagrant
|
|
|
|
|
|
|
|
-exa uses [Vagrant][] to configure virtual machines for testing.
|
|
|
|
|
|
|
+eza uses [Vagrant][] to configure virtual machines for testing.
|
|
|
|
|
|
|
|
-Programs such as exa that are basically interfaces to the system are [notoriously difficult to test][testing].
|
|
|
|
|
|
|
+Programs such as eza that are basically interfaces to the system are [notoriously difficult to test][testing].
|
|
|
Although the internal components have unit tests, it’s impossible to do a complete end-to-end test without mandating the current user’s name, the time zone, the locale, and directory structure to test.
|
|
Although the internal components have unit tests, it’s impossible to do a complete end-to-end test without mandating the current user’s name, the time zone, the locale, and directory structure to test.
|
|
|
(And yes, these tests are worth doing. I have missed an edge case on many an occasion.)
|
|
(And yes, these tests are worth doing. I have missed an edge case on many an occasion.)
|
|
|
|
|
|
|
|
-The initial attempt to solve the problem was just to create a directory of “awkward” test cases, run exa on it, and make sure it produced the correct output.
|
|
|
|
|
|
|
+The initial attempt to solve the problem was just to create a directory of “awkward” test cases, run eza on it, and make sure it produced the correct output.
|
|
|
But even this output would change if, say, the user’s locale formats dates in a different way.
|
|
But even this output would change if, say, the user’s locale formats dates in a different way.
|
|
|
These can be mocked inside the code, but at the cost of making that code more complicated to read and understand.
|
|
These can be mocked inside the code, but at the cost of making that code more complicated to read and understand.
|
|
|
|
|
|
|
@@ -260,7 +180,7 @@ First, initialise the VM:
|
|
|
|
|
|
|
|
host$ vagrant up
|
|
host$ vagrant up
|
|
|
|
|
|
|
|
-The first command downloads the virtual machine image, and then runs our provisioning script, which installs Rust and exa’s build-time dependencies, configures the environment, and generates some awkward files and folders to use as test cases.
|
|
|
|
|
|
|
+The first command downloads the virtual machine image, and then runs our provisioning script, which installs Rust and eza’s build-time dependencies, configures the environment, and generates some awkward files and folders to use as test cases.
|
|
|
Once this is done, you can SSH in, and build and test:
|
|
Once this is done, you can SSH in, and build and test:
|
|
|
|
|
|
|
|
host$ vagrant ssh
|
|
host$ vagrant ssh
|
|
@@ -270,5 +190,6 @@ Once this is done, you can SSH in, and build and test:
|
|
|
All the tests passed!
|
|
All the tests passed!
|
|
|
|
|
|
|
|
Of course, the drawback of having a standard development environment is that you stop noticing bugs that occur outside of it.
|
|
Of course, the drawback of having a standard development environment is that you stop noticing bugs that occur outside of it.
|
|
|
-For this reason, Vagrant isn’t a *necessary* development step — it’s there if you’d like to use it, but exa still gets used and tested on other platforms.
|
|
|
|
|
|
|
+For this reason, Vagrant isn’t a *necessary* development step — it’s there if you’d like to use it, but eza still gets used and tested on other platforms.
|
|
|
It can still be built and compiled on any target triple that it supports, VM or no VM, with `cargo build` and `cargo test`.
|
|
It can still be built and compiled on any target triple that it supports, VM or no VM, with `cargo build` and `cargo test`.
|
|
|
|
|
+
|