Leaves: 文本 UI 磁盘占用树状图可视化工具
Leaves: 文本 UI 磁盘占用树状图可视化工具
Leaves 是一个受 WinDirStat 和 QDirStat 等工具启发的文本模式磁盘占用分析器。它将文件和目录可视化为嵌套矩形的层级结构,其中每个矩形的面积与磁盘上项目的大小成正比。这种方法允许用户在终端环境中快速识别占用磁盘空间的项,使其在无法使用图形用户界面的远程 shell 连接中特别有用。
使用树状图可视化磁盘占用
Leaves 使用树状图布局来表示文件系统。中央面板显示不同大小的矩形;一个文件或目录如果其大小是其兄弟节点的两倍,它将占据矩形两倍的面积。
由于该工具在字符级分辨率下运行,可视化效果是一种粗略的近似。为了应对这一点,Leaves 实现了几个功能来防止视觉混乱:
- 展开与收缩 (Expansion and Deflation):用户可以根据需要展开或收缩目录。收缩目录会将详细的子矩形替换为文件类型摘要,将具有相同扩展名的文件分组到一个与其累积大小成正比的单个矩形中。
- 最大深度控制 (Max Depth Control):
--max-depth标志(默认为 5)允许用户限制工具扫描目录树的深度,以提高内存效率和视觉清晰度。 - X-Ray 模式:通过按下
x键,用户可以进入 "x-ray" 模式,该模式在顶层按类型对文件进行分组,然后按目录拆分这些区域。这为观察整个扫描路径中哪些类型的文件消耗了最多的空间提供了不同的视角。
导航与界面
界面分为三个主要区域:显示当前路径、总大小和文件计数的标题栏;带有可折叠资源管理器树的侧边栏;以及中央树状图面板。
导航通过键盘快捷键和鼠标交互进行处理:
- 聚焦视图 (Focus View):按下 Enter 键聚焦于选定的目录,用该目录的内容替换当前视图。Backspace 键返回用户到父目录。
- 树导航 (Tree Navigation):方向键用于在资源管理器树中导航,空格键用于打开或关闭目录。
- 深度调整 (Depth Adjustment):
+和-键用于调整可视化的运行时深度。
配置与自定义
Leaves 可以通过位于 $USER_CONFIG_DIR/leaves/settings.toml 的配置文件或通过带有 LEAVES_ 前缀的环境变量进行高度自定义。
主题与配色方案
项目根据其类型进行着色,以便于快速视觉扫描。目录根据名称使用冷色调调色板 (viridis) 着色,而文件根据扩展名使用黄/橙/棕色方案着色。
内置了四种主题:
- Fall:文件使用暖色,目录使用冷色。
- Spring:扩展名使用冷色,目录使用暖色。
- Greys:灰色调。
- Mono:黑白。
用户也可以在 settings.toml 文件中使用 HTML 颜色代码、十六进制 RGB 或 HSL 三元组来定义自定义主题。
技术实现与局限性
Leaves 是用 Rust 编写的,需要 Rust 工具链进行源码构建。它支持多个平台的预构建二进制文件。
扫描注意事项
当扫描根目录 (/) 时,用户应排除虚拟文件系统,例如 /dev、/proc、/sys 和 /run,以避免产生无意义的结果。这可以通过使用负向覆盖 (例如,leaves -A -d 3 / '!/proc' '!/tmp') 来实现。
链接处理
- 符号链接 (Symbolic Links):该工具不会跟踪符号链接,以避免在扫描目录之外重复计算磁盘占用。
- 硬链接 (Hard Links):该工具不会检测硬链接,这意味着它们将被重复计算。
社区见解与替代方案
Hacker News 社区的用户将 Leaves 比较了与其他磁盘占用工具。虽然有些人更喜欢 ncdu、dua-cli 或 mcdu 等传统的基于列表的方案,但其他人发现树状图可视化对于发现大型文件簇更直观。
"文件类型扩展分区功能是应对字符块限制的一个非常聪明的补充。"
其他提到的替代方案包括 GUI 工具如 WizTree、GrandPerspective 和 SpaceSniffer,以及 TUI 工具 Broot (特别是 br -w 命令)。