引言
在类 Unix 系统的命令行环境中,ls
命令是使用最频繁的工具之一,用于列出目录内容。然而,随着现代开发工作流和用户期望的演变,ls
的默认功能和输出有时显得过于基础。eza
应运而生,它是一个用 Rust 编写的现代化 ls
替代品,旨在提供更丰富的功能、更友好的默认设置和更美观的输出。
值得注意的是,eza
是著名项目 exa
的一个社区维护分支。由于 exa
项目的维护一度停滞,eza
社区接手并继续开发,修复了原有问题,并积极添加新特性,使其成为 exa
事实上的继任者。
主要特性
eza
继承了 exa
的诸多优点,并在此基础上进行了改进,其核心特性包括:
- 增强的彩色输出:
eza
默认启用彩色输出,根据文件类型和元数据(如权限、大小)使用不同颜色高亮,极大地提高了可读性。用户还可以通过环境变量EZA_COLORS
自定义颜色主题。 - 易读的文件大小: 自动以人类可读的单位(如 KB, MB, GB)显示文件大小,比
ls
的字节数显示更直观。 - 图标支持: 可选地显示文件和目录的图标(需要安装 Nerd Fonts 字体),使文件类型一目了然。使用
--icons
参数启用。 - 多种视图模式:
- 长列表视图 (
-l
): 显示详细的文件元数据,如权限、所有者、组、修改时间、硬链接数、inode 等。 - 网格视图 (
--grid
): 紧凑地排列文件列表。 - 树状视图 (
-T
或--tree
): 以树状结构递归显示目录内容,类似tree
命令,并可通过--level
控制深度。
- 长列表视图 (
- Git 集成:
- 可以直接在文件列表中显示文件的 Git 状态(未修改、已修改、已暂存、新增、重命名等),对于开发者来说极为方便 (
--git
)。 - 能够识别并遵循
.gitignore
文件中的规则 (--git-ignore
),在浏览项目时隐藏被忽略的文件。
- 可以直接在文件列表中显示文件的 Git 状态(未修改、已修改、已暂存、新增、重命名等),对于开发者来说极为方便 (
- 丰富的元数据: 除了标准信息,
eza
还能显示文件的扩展属性 (xattrs) 和其他元数据。 - 高度可定制: 提供丰富的命令行选项来控制排序 (
--sort
)、过滤 (--ignore
,--only-dirs
,--only-files
)、输出格式等。 - 跨平台: 可在 Linux、macOS 和 Windows 上运行。
安装与快速入门
eza
可以通过多种包管理器轻松安装:
- macOS (Homebrew):
brew install eza
- Debian/Ubuntu (apt): 需要添加 PPA 或从 release 下载 .deb 包(请参考官方文档获取最新指令)
- Arch Linux:
pacman -S eza
- Fedora:
dnf install eza
- Cargo (Rust 包管理器):
cargo install eza
- 其他: 查看官方文档获取更多平台的安装方式。
安装后,为了方便使用,许多用户会设置 Shell 别名,将 ls
指向 eza
:
# 在你的 .bashrc, .zshrc 或类似配置文件中添加
alias ls='eza'
alias l='eza -l' # 长列表
alias la='eza -la' # 长列表,显示所有文件(包括隐藏)
alias ll='eza -la' # 同上
alias lt='eza -T' # 树状视图
alias l.='eza -lad .*' # 只显示隐藏文件和目录
基础用法示例:
# 基本列表
eza
# 长列表,显示所有文件
eza -la
# 树状视图,显示两层
eza -T --level=2
# 显示 Git 状态和图标
eza -l --git --icons
# 网格视图
eza --grid
进阶用法与配置
eza
的强大之处在于其灵活性和可配置性:
- 自定义颜色和图标:
- 通过设置
EZA_COLORS
环境变量,可以精细控制不同文件类型、权限、日期等的颜色。 - 确保已安装 Nerd Fonts,并使用
--icons
参数启用图标。
- 通过设置
- 配置文件: 虽然
eza
本身不直接支持类似.ezarc
的配置文件,但你可以将常用选项组合成 Shell 函数或更复杂的别名。 - 高级排序:
- 按扩展名排序:
eza --sort=ext
- 按版本号排序 (适用于包含版本号的文件名):
eza --sort=version
- 反向排序:
eza --reverse
或-r
- 按扩展名排序:
- 文件过滤:
- 忽略特定模式:
eza --ignore='*.tmp|node_modules'
- 仅显示目录:
eza --only-dirs
- 仅显示文件:
eza --only-files
- 忽略特定模式:
- 控制输出:
- 显示列标题:
eza -l --header
- 将目录排在前面:
eza --group-directories-first
- 显示列标题:
生态整合与技巧
eza
可以很好地与其他流行的命令行工具集成:
- 与
fd
(find 替代品) 结合: 使用fd
查找文件,然后用eza
显示结果。
bash
# 查找所有 markdown 文件并用 eza 显示详细信息
fd . -e md -x eza -l {} - 与
fzf
(模糊查找器) 结合: 创建一个函数,用eza
列出文件,然后通过fzf
进行交互式模糊搜索和预览。
bash
# 示例 Zsh 函数
fe() {
local file
file=$(eza --all --sort=name | fzf --preview 'eza --all --long --color=always {}')
if [[ -n $file ]]; then
# 对选中的文件执行操作,例如编辑
$EDITOR "$file"
fi
} - 与
zoxide
(智能目录跳转) 结合: 跳转目录后自动用eza
显示内容。
bash
# 示例 Zsh 配置
# 在 zoxide 初始化后
chpwd_functions+=(eza_on_cd)
eza_on_cd() {
eza
}
与类似工具对比
ls
:eza
在默认输出(颜色、易读大小)、Git 集成、树状视图和图标支持方面远超ls
。ls
更轻量,且在所有 POSIX 系统上预装,但在功能和易用性上较为基础。exa
:eza
是exa
的积极维护分支,修复了exa
的一些问题,并持续添加新功能。如果你之前使用exa
,迁移到eza
通常很平滑,只需更新命令或别名即可。lsd
(ls deluxe):lsd
是另一个流行的ls
替代品,也提供彩色输出和图标。一些用户认为lsd
的默认图标和视觉效果更吸引人,而eza
在某些场景下可能性能稍好,并且 Git 集成功能更强。lsd
默认显示图标,而eza
需要参数启用。
常见问题与注意事项
- 图标显示不正确: 确保已正确安装并配置了 Nerd Fonts 字体,并在终端模拟器中启用该字体。
- 颜色显示异常: 检查终端模拟器的颜色支持(通常需要支持 256 色或真彩色)。尝试不同的
EZA_COLORS
设置或终端主题。 - 性能: 在包含极其大量文件(数十万或更多)的目录中,
eza
(尤其是启用复杂特性如 Git 状态时)可能会比原生ls
稍慢。可以使用--level
限制树状视图深度,或避免在超大目录中默认启用所有功能。 - 配置:
eza
主要通过命令行参数进行配置。复杂的默认行为通常通过 Shell 别名或函数实现。
总结
eza
是一个功能强大、高度可定制且视觉效果出色的 ls
命令替代品。它通过更智能的默认设置、丰富的元数据展示、便捷的 Git 集成以及对现代终端特性的支持(如颜色和图标),显著提升了命令行浏览文件系统的体验。作为 exa
的活跃继任者,eza
拥有一个积极响应的社区,并持续进行改进。
如果你是一位经常使用命令行的开发者或系统管理员,并且希望提升文件列表操作的效率和舒适度,那么 eza
绝对值得一试。
项目地址: https://github.com/eza-community/eza
评论(0)