2021-11-10 15:57:24 +08:00
|
|
|
|
[#]: subject: "exa: A Modern Replacement for the ls Command"
|
|
|
|
|
[#]: via: "https://itsfoss.com/exa/"
|
|
|
|
|
[#]: author: "Pratham Patel https://itsfoss.com/author/pratham/"
|
|
|
|
|
[#]: collector: "lujun9972"
|
|
|
|
|
[#]: translator: "wxy"
|
|
|
|
|
[#]: reviewer: "wxy"
|
2021-11-10 16:02:15 +08:00
|
|
|
|
[#]: publisher: "wxy"
|
|
|
|
|
[#]: url: "https://linux.cn/article-13972-1.html"
|
2021-11-10 15:57:24 +08:00
|
|
|
|
|
|
|
|
|
exa:一个 ls 命令的现代替代品
|
|
|
|
|
======
|
|
|
|
|
|
|
|
|
|
![](https://img.linux.net.cn/data/attachment/album/202111/10/155648vf7iwcwsetitqfuw.jpg)
|
|
|
|
|
|
|
|
|
|
我敢打赌你使用过 [Linux 上的 ls 命令][1],它是你 [学习 Linux][2] 时首次接触到的命令之一。
|
|
|
|
|
|
|
|
|
|
这个简单的 `ls` 命令列出目录的内容十分方便,但是直到我发现 `exa` 之前从来没想过会有命令能替代它。
|
|
|
|
|
|
|
|
|
|
### exa 命令简介
|
|
|
|
|
|
|
|
|
|
[exa][3] 是一个命令行工具,可以列出指定路径(如未指定则是当前目录)的目录和文件。这也许听起来很熟悉,因为这就是 `ls` 命令所做的事情。
|
|
|
|
|
|
|
|
|
|
`exa` 被视作从 UNIX 旧时代延续至今的古老的 `ls` 命令的一个现代替代品。如其所声称的那样,它有比 `ls` 命令更多的功能、更好的默认行为。
|
|
|
|
|
|
|
|
|
|
![exa 功能][4]
|
|
|
|
|
|
|
|
|
|
以下是一些你应该使用 `exa` 替代 `ls` 的原因:
|
|
|
|
|
|
|
|
|
|
* `exa` 像 `ls` 一样可移植(在所有主流 Linux 发行版、*BSD 和 macOS 上可用)
|
|
|
|
|
* 默认彩色输出
|
|
|
|
|
* `exa` 不同格式化的“详细”输出也许会吸引 Linux/BSD 新手
|
|
|
|
|
* 文件查询是并行进行的,这使得 `exa` 与 `ls` 的性能相当
|
|
|
|
|
* 显示单个文件的 git 暂存或未暂存状态
|
|
|
|
|
|
|
|
|
|
`exa` 的另外一个不同的地方是它是用 Rust 编写的。顺便说一句,Rust 与 C 语言的执行速度相近,但在编译时减少了内存错误,使你的软件可以快速而安全地执行。
|
|
|
|
|
|
|
|
|
|
### 在 Linux 系统上安装 exa
|
|
|
|
|
|
|
|
|
|
`exa` 最近很流行,因为许多发行版开始将其包括在其官方软件库中。也就是说,你应该可以使用你的 [发行版的包管理器] 来安装它。
|
|
|
|
|
|
|
|
|
|
从 Ubuntu 20.10 开始,你可以使用 `apt` 命令来安装它:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
sudo apt install exa
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Arch Linux 已经有了它,你只需要 [使用 pacman 命令][6] 即可:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
sudo pacman -S exa
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
如果它无法通过你的包管理器安装,请不要担心。毕竟它是一个 Rust 包,你可以很容易地用 Cargo 安装它。请确保在你使用的任何发行版 [或 Ubuntu 上安装了 Rust 和 Cargo][7]。
|
|
|
|
|
|
|
|
|
|
安装 Rust 和 Cargo 后,使用此命令安装 `exa`:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
cargo install exa
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 使用 exa
|
|
|
|
|
|
|
|
|
|
`exa` 有很多命令选项,主要是为了更好的格式化输出和一些提高舒适度的改进,比如文件的 git 暂存或未暂存状态等等。
|
|
|
|
|
|
|
|
|
|
下面是一些屏幕截图,展示了 `exa` 是如何在你的系统上工作的。
|
|
|
|
|
|
|
|
|
|
简单地使用 `exa` 命令将产生类似于 `ls` 但带有颜色的输出。这种彩色的东西可能没有那么吸引人,因为像 Ubuntu 这样的发行版至少在桌面版本中已经提供了彩色的 `ls` 输出。不过,`ls` 命令本身默认没有彩色输出。
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
exa
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
![exa 命令的输出截图,没有任何额外的标志][8]
|
|
|
|
|
|
|
|
|
|
请注意,`exa` 和 `ls` 命令的选项不尽相同。例如,虽然 `-l` 选项在 `exa` 和 `ls` 中都给出了长列表,但 `-h` 选项添加了一个列标题,而不是 `ls` 的人类可读选项。
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
exa -lh
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
![正如我之前提到的,exa 有列标题以获得更好的“详细”输出][9]
|
|
|
|
|
|
|
|
|
|
我前面说过,`exa` 已经内置了 Git 集成。下面的屏幕截图给出了 `–git` 标志的演示。请注意 `test_file` 在 `git` 的 `tracked` 列中显示 `-N` ,因为它尚未添加到存储库中。
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
exa --git -lh
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
![演示 git 标志如何与 exa 一起工作][10]
|
|
|
|
|
|
|
|
|
|
下面的例子不是我的猫键入的。它是各种选项的组合。`exa` 有可供你尝试和探索的很多选项。
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
exa -abghHliS
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
![一个非常丰富多彩和详细的输出,具有用户友好的详细输出][11]
|
|
|
|
|
|
|
|
|
|
你可以通过在终端中运行以下命令来获取完整的选项列表:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
exa --help
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
但是,如果你想了解 `exa` 所提供的功能,可以查看其 [Git 存储库][13] 上的 [官方文档][12]。
|
|
|
|
|
|
|
|
|
|
### 值得从 ls 切换到 exa 吗?
|
|
|
|
|
|
|
|
|
|
对于类 UNIX 操作系统的新手来说,`exa` 可能是用户友好的,它牺牲了在脚本中容易使用的能力,以换取“易用性”和外观。其中,显示得更清楚并不是一件坏事。
|
|
|
|
|
|
|
|
|
|
无论如何,`ls` 就像通用命令。你可以将 `exa` 用于个人用途,但在编写脚本时,请坚持使用 `ls`。当预期输出与任一命令中的实际输出不匹配时,`ls` 和 `exa` 之间一个 [或多个] 标志的差异可能会让你发疯。
|
|
|
|
|
|
|
|
|
|
我想知道你对 `exa` 的看法。你已经尝试过了吗?你对它的体验如何?
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
via: https://itsfoss.com/exa/
|
|
|
|
|
|
|
|
|
|
作者:[Pratham Patel][a]
|
|
|
|
|
选题:[lujun9972][b]
|
|
|
|
|
译者:[wxy](https://github.com/wxy)
|
|
|
|
|
校对:[wxy](https://github.com/wxy)
|
|
|
|
|
|
|
|
|
|
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
|
|
|
|
|
|
|
|
|
[a]: https://itsfoss.com/author/pratham/
|
|
|
|
|
[b]: https://github.com/lujun9972
|
|
|
|
|
[1]: https://linuxhandbook.com/ls-command/
|
|
|
|
|
[2]: https://itsfoss.com/free-linux-training-courses/
|
|
|
|
|
[3]: https://the.exa.website/
|
|
|
|
|
[4]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/exa-features.png?resize=800%2C331&ssl=1
|
|
|
|
|
[5]: https://itsfoss.com/package-manager/
|
|
|
|
|
[6]: https://itsfoss.com/pacman-command/
|
|
|
|
|
[7]: https://itsfoss.com/install-rust-cargo-ubuntu-linux/
|
|
|
|
|
[8]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/01_exa.webp?resize=800%2C600&ssl=1
|
|
|
|
|
[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/11/02_exa_lh.webp?resize=800%2C600&ssl=1
|
|
|
|
|
[10]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/03_exa_git.webp?resize=800%2C600&ssl=1
|
|
|
|
|
[11]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/11/04_exa_all_flags.webp?resize=800%2C600&ssl=1
|
|
|
|
|
[12]: https://github.com/ogham/exa#command-line-options
|
|
|
|
|
[13]: https://github.com/ogham/exa
|