
eza 是 Unix 和 Linux 操作系统中随附的久经考验的文件列表命令行程序 ls 的现代替代品,它提供了更多功能和更优的默认设置。
它使用颜色来区分文件类型和元数据。
它支持符号链接、扩展属性和 Git。
并且它小巧、快速,且仅为单一二进制文件。
通过刻意做出不同的决策,eza 试图成为 ls 一个功能更丰富、更用户友好的版本。
eza 具备 exa 中没有的功能(非详尽列表):
- 修复了 exa 2021 版本中引入的 “网格 Bug”。
- 超链接支持。
- 挂载点详细信息。
- Selinux 上下文输出。
- Git 仓库状态输出。
- 人类可读的相对日期。
- 多项安全修复。
- 支持
bright终端颜色。 - 许多较小的 Bug 修复/变更!
- 用于自定义颜色和图标的配置
theme.yml文件。
...而且,还有如此多的内容,以至于一直更新这些内容变得令人疲惫。 说真的,我们有很多很棒的东西。
试一试!
Nix ❄️
如果你已经配置了支持 flake 的 Nix,你可以使用 nix run 命令来试用 eza:
nix run github:eza-community/eza
Nix 将构建 eza 并运行它。
如果你想以这种方式传递参数,请使用例如 nix run github:eza-community/eza -- -ol。
安装
eza 可用于 Windows、macOS 和 Linux。特定平台和发行版的安装说明可在 INSTALL.md 中找到。
命令行选项
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=(when): 何时将条目显示为超链接(always, auto, never)
- --absolute=(mode): 以绝对路径显示条目(on, follow, off)
- -w, --width=(columns): 设置屏幕宽度(以列数计)
过滤选项
点击以展开
- -a, --all: 显示隐藏文件和“点”文件
- -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’,或自定义样式 ‘+<FORMAT>’(例如,‘+%Y-%m-%d %H:%M’ => ‘2023-09-30 13:00’。有关格式字符串的更多规范,请参阅eza(1)手册页 和 chrono 文档)。 -
--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 页面以获取有关用法的进一步文档。它们可在以下位置获取
- 在线 在仓库中
- 在您的终端中通过
man eza,自版本[0.18.13] - 2024-04-25
自定义主题
点击展开
Eza 最近添加了对 theme.yml 文件的支持,您可以在其中指定所有现有的主题配置选项
可用于 LS_COLORS 和 EXA_COLORS 环境变量,以及为不同的文件类型和扩展名指定不同图标的选项。任何已设置的环境变量将继续有效,并且为了向后兼容性将具有优先权。
新 预制主题
查看官方 eza-themes 仓库中可用的主题,或贡献您自己的主题。
示例主题文件可在 docs/theme.yml 中找到,需要将其放置在由环境变量 EZA_CONFIG_DIR 指定的目录中,或者默认在 $XDG_CONFIG_HOME/eza 中查找。
参与 eza 开发
如果你想为 eza 做出贡献,首先,你被期望遵守我们的 行为准则。 在理解行为准则之后,你可以查看我们的 CONTRIBUTING.md 以获取更多关于实际开发的信息。