TranslateProject/published/202111/20211110 exa- A Modern Replacement for the ls Command.md

141 lines
6.0 KiB
Markdown
Raw Permalink Normal View History

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"
[#]: 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