eza-community/eza
GitHub: eza-community/eza
一个用 Rust 编写的现代化 `ls` 替代工具,提供彩色输出、Git 状态集成、树形视图和高度可定制的文件列表功能。
Stars: 20287 | Forks: 402
# eza
`ls` 的现代替代品。

[](https://nixos.org)
[](CODE_OF_CONDUCT.md)
[](https://github.com/eza-community/eza/actions/workflows/unit-tests.yml)
[](https://crates.io/crates/eza)


**eza** 是经典文件列表命令行程序 `ls` 的现代替代品(`ls` 随 Unix 和 Linux 操作系统附带),它提供了更多功能和更好的默认设置。
它使用颜色来区分文件类型和元数据。
它能识别 symlinks、扩展属性和 Git。
而且它**体积小**、**速度快**,并且只是**单个二进制文件**。
通过刻意做出一些不同的设计决策,eza 试图成为一个功能更丰富、用户友好度更高的 `ls` 版本。
**eza** 中 exa 没有的功能(非详尽列表):
- 修复了 exa 2021 中引入的 [“The Grid Bug”](https://github.com/eza-community/eza/issues/66#issuecomment-1656758327)。
- Hyperlink 支持。
- Mount point 详情。
- Selinux 上下文输出。
- Git repo 状态输出。
- 人类可读的相对日期。
- 多项安全修复。
- 支持 `bright` 终端颜色。
- 许多较小的错误修复/更改!
- 用于自定义颜色和图标的配置 `theme.yml` 文件。
...以及说真的,我们还有很多好东西,多到更新这个列表都变得精疲力竭。
不开玩笑,我们真的有很多好东西。
试一试!
### Nix ❄️
如果您已经设置好 Nix 并启用了 flake 支持,可以使用 `nix run` 命令尝试 eza:
```
nix run github:eza-community/eza
```
Nix 将构建 eza 并运行它。
如果您想以这种方式传递参数,请使用例如 `nix run github:eza-community/eza -- -ol`。
# 安装
eza 适用于 Windows、macOS 和 Linux。特定平台和发行版的安装说明可以在 [INSTALL.md](INSTALL.md) 中找到。
[](https://repology.org/project/eza/versions)
命令行选项
eza 的选项几乎完全不像 `ls` 的。快速概览:
## 显示选项
点击展开
- **-1**, **--oneline**: 每行显示一个条目
- **-G**, **--grid**: 将条目作为网格显示(默认)
- **-l**, **--long**: 显示扩展详细信息和属性
- **-R**, **--recurse**: 递归进入目录
- **-T**, **--tree**: 以树状结构递归进入目录
- **-x**, **--across**: 将网格横向排序,而不是向下
- **-F**, **--classify=(when)**: 在文件名旁显示类型指示符(always, auto, never)
- **--colo[u]r=(when)**: 何时使用终端颜色(always, auto, never)
- **--colo[u]r-scale=(field)**: 突出显示 `field` 的级别(all, age, size)
- **--color-scale-mode=(mode)**: 在 --color-scale 中使用渐变色或固定色。有效选项为 `fixed` 或 `gradient`
- **--icons=(when)**: 何时显示图标(always, auto, never)
- **--hyperlink**: 将条目显示为超链接
- **--absolute=(mode)**: 显示条目的绝对路径(on, follow, off)
- **-w**, **--width=(columns)**: 设置屏幕宽度(以列为单位)
## 过滤选项
点击展开
- **-a**, **--all**: 显示隐藏文件和 'dot' 文件
- **-d**, **--treat-dirs-as-files**: 像普通文件一样列出目录
- **-L**, **--level=(depth)**: 限制递归深度
- **-r**, **--reverse**: 反转排序顺序
- **-s**, **--sort=(field)**: 指定排序字段
- **--group-directories-first**: 将目录列在其他文件之前
- **--group-directories-last**: 将目录列在其他文件之后
- **-D**, **--only-dirs**: 仅列出目录
- **-f**, **--only-files**: 仅列出文件
- **--no-symlinks**: 不显示符号链接
- **--show-symlinks**: 显式显示链接(配合 `--only-dirs`、`--only-files` 使用,以显示符合过滤条件的符号链接)
- **--git-ignore**: 忽略 `.gitignore` 中提到的文件
- **-I**, **--ignore-glob=(globs)**: 要忽略的文件的 glob 模式(用管道符分隔)
传递两次 `--all` 选项还可以显示 `.` 和 `..` 目录。
## 长格式视图选项
点击展开
这些选项在使用 `--long` (`-l`) 运行时可用:
- **-b**, **--binary**: 使用二进制前缀列出文件大小
- **-B**, **--bytes**: 以字节为单位列出文件大小,不带任何前缀
- **-g**, **--group**: 列出每个文件所属的组
- **--smart-group**: 仅当组名与所有者不同时才显示组
- **-h**, **--header**: 为每列添加标题行
- **-H**, **--links**: 列出每个文件的硬链接数
- **-i**, **--inode**: 列出每个文件的 inode 编号
- **-m**, **--modified**: 使用修改时间戳字段
- **-M**, **--mounts**: 显示挂载详情(仅限 Linux 和 MacOS)。
- **-S**, **--blocksize**: 显示分配的文件系统块大小
- **-t**, **--time=(field)**: 使用哪个时间戳字段
- **-u**, **--accessed**: 使用访问时间戳字段
- **-U**, **--created**: 使用创建时间戳字段
- **-X**, **--dereference**: 解引用符号链接以获取文件信息
- **-Z**, **--context**: 列出每个文件的安全上下文
- **-@**, **--extended**: 列出每个文件的扩展属性和大小
- **--changed**: 使用变更时间戳字段
- **--git**: 列出每个文件的 Git 状态(如果是被跟踪或忽略的)
- **--git-repos**: 列出每个目录的 Git 状态(如果是被跟踪的)
- **--git-repos-no-status**: 列出目录是否为 Git 仓库,但不显示其状态(更快)
- **--no-git**: 抑制 Git 状态(始终覆盖 `--git`、`--git-repos`、`--git-repos-no-status`)
- **--time-style**: 如何格式化时间戳。有效的时间戳样式为 ‘`default`’、‘`iso`’、‘`long-iso`’、‘`full-iso`’、‘`relative`’,或自定义样式 ‘`+`’(例如,‘`+%Y-%m-%d %H:%M`’ => ‘`2023-09-30 13:00`’。有关格式字符串的更多规范,请参阅 _`eza(1)` 手册页_ 和 [chrono 文档](https://docs.rs/chrono/latest/chrono/format/strftime/index.html)。)。
- **--total-size**: 显示递归目录大小
- **--no-permissions**: 抑制权限字段
- **-o**, **--octal-permissions**: 以八进制格式列出每个文件的权限
- **--no-filesize**: 抑制文件大小字段
- **--no-user**: 抑制用户字段
- **--no-time**: 抑制时间字段
- **--stdin**: 从 stdin 读取文件名
部分选项接受参数:
- 有效的 **--colo\[u\]r** 选项为 **always**、**automatic**(或简写为 **auto**)和 **never**。
- 有效的排序字段为 **accessed**、**changed**、**created**、**extension**、**Extension**、**inode**、**modified**、**name**、**Name**、**size**、**type** 和 **none**。以大写字母开头的字段会将大写字母排在小写字母之前。modified 字段有别名 **date**、**time** 和 **newest**,而其反向排序有别名 **age** 和 **oldest**。
- 有效的时间字段为 **modified**、**changed**、**accessed** 和 **created**。
- 有效的时间样式为 **default**、**iso**、**long-iso**、**full-iso** 和 **relative**。
有关用法的更多文档,请参阅 `man` 页面。可通过以下方式获取:
- 在线查看 [仓库中](https://github.com/eza-community/eza/tree/main/man)
- 在终端中通过 `man eza` 查看,自版本 [`[0.18.13] - 2024-04-25`](https://github.com/eza-community/eza/blob/main/CHANGELOG.md#01813---2024-04-25) 起
## 自定义主题
点击展开
**Eza** 最近增加了对 `theme.yml` 文件的支持,您可以在其中指定 `LS_COLORS` 和 `EXA_COLORS` 环境变量可用的所有现有主题选项,以及为不同文件类型和扩展名指定不同图标的选项。任何已设置的环境变量将继续工作,并为了向后兼容而优先使用。
#### **新增** 预制主题
查看官方 [eza-themes](https://github.com/eza-community/eza-themes) 仓库中可用的主题,或者贡献您自己的主题。
示例主题文件位于 `docs/theme.yml`,需要将其放置在环境变量 `EZA_CONFIG_DIR` 指定的目录中,或者默认在 `$XDG_CONFIG_HOME/eza` 中查找。
完整详情可在 [手册页](https://github.com/eza-community/eza/tree/main/man/eza_colors-explanation.5.md) 中找到,示例主题文件包含在 [此处](https://github.com/eza-community/eza/tree/main/docs/theme.yml)
# 开发 eza
如果您想为 eza 做贡献,首先,请您遵守我们的
[行为准则](https://github.com/eza-community/eza/blob/main/CODE_OF_CONDUCT.md)。
在了解行为准则之后,您可以查看我们的
[CONTRIBUTING.md](https://github.com/eza-community/eza/blob/main/CONTRIBUTING.md)
以获取关于实际开发的更多信息。
[](https://star-history.com/#eza-community/eza&Date)标签:Awesome, CLI, Git集成, ls替代品, Rust, WiFi技术, 可视化界面, 开发辅助, 效率工具, 文件列表, 文件系统, 系统管理, 终端美化, 网络安全审计, 网络流量审计, 通知系统, 通知系统, 通知系统, 高亮显示