在 Linux 上用 dust 替换 du

dust 命令是用 Rust 编写的 du 命令的更直观的实现。
52 位读者喜欢这篇文章。

如果你在 Linux 命令行工作,你一定熟悉 du 命令。 了解像 du 这样的命令,它可以快速返回有关磁盘使用情况的信息,这是命令行使程序员更高效的方式之一。 但是,如果你正在寻找一种可以节省更多时间并使你的生活更轻松的方法,请查看 dust,它是用 Rust 重写的 du,具有更强的直观性。

简而言之,dust 是一个提供文件类型和元数据的工具。 如果你在目录中触发 dust,它将以几种方式报告该目录的磁盘利用率。 它提供了一个非常有用的图表,告诉你哪个文件夹正在使用最多的磁盘空间。 如果有嵌套文件夹,你可以看到每个文件夹使用的空间百分比。

安装 dust

你可以使用 Rust 的 Cargo 包管理器安装 dust

$ cargo install du-dust

或者,你可能会在 Linux 上的软件仓库中找到它,在 macOS 上,使用 MacPortsHomebrew

探索 dust

在目录上执行 dust 命令会返回一个图表,以树状格式显示其内容以及每个项目所占的百分比。

$ dust
 5.7M   ┌── exa                                                           │                                                ██ │   2%
 5.9M   ├── tokei                                                         │                                                ██ │   2%
 6.1M   ├── dust                                                          │                                                ██ │   2%
 6.2M   ├── tldr                                                          │                                                ██ │   2%
 9.4M   ├── fd                                                            │                                                ██ │   4%
 2.9M   │ ┌── exa                                                         │                                              ░░░█ │   1%
  15M   │ ├── rustdoc                                                     │                                              ░███ │   6%
  18M   ├─┴ bin                                                           │                                              ████ │   7%
  27M   ├── rg                                                            │                                            ██████ │  11%
 1.3M   │     ┌── libz-sys-1.1.3.crate                                    │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█ │   0%
 1.4M   │     ├── libgit2-sys-0.12.19+1.1.0.crate                         │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█ │   1%
 4.5M   │   ┌─┴ github.com-1ecc6299db9ec823                               │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█ │   2%
 4.5M   │ ┌─┴ cache                                                       │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█ │   2%
 1.0M   │ │   ┌── git2-0.13.18                                            │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   0%
 1.4M   │ │   ├── exa-0.10.1                                              │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   1%
 1.5M   │ │   │ ┌── src                                                   │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   1%
 2.2M   │ │   ├─┴ idna-0.2.3                                              │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   1%
 1.2M   │ │   │       ┌── linux                                           │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   0%
 1.6M   │ │   │     ┌─┴ linux_like                                        │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   1%
 2.6M   │ │   │   ┌─┴ unix                                                │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   1%
 3.1M   │ │   │ ┌─┴ src                                                   │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   1%
 3.1M   │ │   ├─┴ libc-0.2.94                                             │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   1%
 1.2M   │ │   │     ┌── test                                              │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   0%
 2.6M   │ │   │   ┌─┴ zlib-ng                                             │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   1%
 904K   │ │   │   │   ┌── vstudio                                         │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   0%
 2.0M   │ │   │   │ ┌─┴ contrib                                           │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   1%
 3.4M   │ │   │   ├─┴ zlib                                                │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   1%
 6.1M   │ │   │ ┌─┴ src                                                   │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓██ │   2%
 6.1M   │ │   ├─┴ libz-sys-1.1.3                                          │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓██ │   2%
 1.6M   │ │   │     ┌── pcre                                              │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   1%
 2.5M   │ │   │   ┌─┴ deps                                                │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   1%
 3.8M   │ │   │   ├── src                                                 │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓█ │   1%
 7.4M   │ │   │ ┌─┴ libgit2                                               │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓██ │   3%
 7.6M   │ │   ├─┴ libgit2-sys-0.12.19+1.1.0                               │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓██ │   3%
  26M   │ │ ┌─┴ github.com-1ecc6299db9ec823                               │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░██████ │  10%
  26M   │ ├─┴ src                                                         │               ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░██████ │  10%
 932K   │ │   ┌── .cache                                                  │               ░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█ │   0%
  11M   │ │   │     ┌── pack-c3e3a51a17096a3078196f3f014e02e5da6285aa.idx │               ░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓███ │   4%
 135M   │ │   │     ├── pack-c3e3a51a17096a3078196f3f014e02e5da6285aa.pack│               ░░░░░░▓▓███████████████████████████ │  53%
 147M   │ │   │   ┌─┴ pack                                                │               ░░░░░░█████████████████████████████ │  57%
 147M   │ │   │ ┌─┴ objects                                               │               ░░░░░░█████████████████████████████ │  57%
 147M   │ │   ├─┴ .git                                                    │               ░░░░░░█████████████████████████████ │  57%
 147M   │ │ ┌─┴ github.com-1ecc6299db9ec823                               │               ░░░░░░█████████████████████████████ │  57%
 147M   │ ├─┴ index                                                       │               ░░░░░░█████████████████████████████ │  57%
 178M   ├─┴ registry                                                      │               ███████████████████████████████████ │  69%
 257M ┌─┴ .                                                               │██████████████████████████████████████████████████ │ 100%
$ 

要将 dust 应用于特定目录

$ dust ~/Work/

-r 选项以相反的顺序显示输出,根目录在底部

$ dust -r ~/Work/

使用 dust -d 3 返回三个级别的子目录及其磁盘利用率

$ dust -d 3 ~/Work/wildfly/jaxrs/target/classes
$ dust -d 3 ~/Work/wildfly/jaxrs/target/classes
 4.0K     ┌── jaxrs.xml                                                           │                                         █ │   1%
 4.0K   ┌─┴ subsystem-templates                                                   │                                         █ │   1%
 4.0K   │   ┌── org.jboss.as.controller.transform.ExtensionTransformerRegistration│                                         █ │   1%
 4.0K   │   ├── org.jboss.as.controller.Extension                                 │                                         █ │   1%
 8.0K   │ ┌─┴ services                                                            │                                         █ │   2%
 8.0K   ├─┴ META-INF                                                              │                                         █ │   2%
 4.0K   │ ┌── jboss-as-jaxrs_1_0.xsd                                              │                                        ░█ │   1%
 8.0K   │ ├── jboss-as-jaxrs_2_0.xsd                                              │                                        ░█ │   2%
  12K   ├─┴ schema                                                                │                                        ██ │   3%
 408K   │   ┌── as                                                                │  ████████████████████████████████████████ │  94%
 408K   │ ┌─┴ jboss                                                               │  ████████████████████████████████████████ │  94%
 408K   ├─┴ org                                                                   │  ████████████████████████████████████████ │  94%
 432K ┌─┴ classes                                                                 │██████████████████████████████████████████ │ 100%
$ 

结论

dust 的美妙之处在于它是一个小巧、简单且易于理解的命令。 它使用颜色方案来表示最大的子目录,从而可以轻松地可视化你的目录。 这是一个流行的项目,欢迎贡献。

你是否使用过或考虑过使用 dust? 如果是这样,请在下面的评论中告诉我们你的想法。

接下来要读什么
Sudeshna is from Kolkata and currently working for the Red Hat Middleware team in Pune, India. She loves to explore different open source projects and programs. She started contributing to Open Source a couple of years back as an Hacktober Participant since then she has been an avid blogger at Dzone on Python and Data Science. She enjoys her free time stargazing and loves continental cuisine. She is an RHCSA and is working her way to RHCA.
Sudeshna 来自加尔各答,目前在印度浦那的 Red Hat 中间件团队工作。 她喜欢探索不同的开源项目和程序。 她几年前开始作为 Hacktober 参与者为开源做贡献,从那时起,她一直是 Dzone 上关于 Python 和数据科学的狂热博主。 她喜欢空闲时间观星,并且热爱欧陆美食。

5 条评论

这看起来让我觉得视觉上很混乱。 当我使用 du 时,它给了我我想看到的一切。

du 命令快速、简单,并且非常适合我的需求。 我看到了一些 dust 可能有益的边缘情况,但没有任何令人信服的理由让我切换到它。

ncdu 更好,不需要额外的依赖项。

当然,cargo 命令提供的不仅仅是 dust。 我也不喜欢默认安装目录,$HOME/.cargo/bin。 我这样安装 dust
$ sudo cargo install du-dust --root /usr/local/bin/cargo
哇哦! 这么多的输出! 我稍后会引用。 最重要的是建议将 /usr/local/bin/cargo/bin 添加到我的 PATH。

好的,关于输出
正在更新 crates.io 索引
已下载 du-dust v0.6.0
在 0.75 秒内下载了 1 个 crate (86.3 KB)
正在安装 du-dust v0.6.0
已下载 ansi_term v0.11.0
已下载 atty v0.2.14
已下载 ansi_term v0.12.1
已下载 autocfg v1.0.1
已下载 bitflags v1.2.1
已下载 cfg-if v1.0.0
已下载 aho-corasick v0.7.18
已下载 crossbeam-channel v0.5.1
已下载 crossbeam-deque v0.8.0
已下载 clap v2.33.3
已下载 crossbeam-epoch v0.9.5
已下载 crossbeam-utils v0.8.5
已下载 either v1.6.1
已下载 lazy_static v1.4.0
已下载 libc v0.2.97
已下载 lscolors v0.7.1
已下载 memchr v2.4.0
已下载 memoffset v0.6.4
已下载 num_cpus v1.13.0
已下载 rayon v1.5.1
已下载 rayon-core v1.9.1
已下载 regex v1.5.4
已下载 scopeguard v1.1.0
已下载 regex-syntax v0.6.25
已下载 stfu8 v0.2.4
已下载 term_size v0.3.2
已下载 strsim v0.8.0
已下载 terminal_size v0.1.17
已下载 textwrap v0.11.0
已下载 thousands v0.2.0
已下载 unicode-width v0.1.8
已下载 vec_map v0.8.2
在 1.08 秒内下载了 32 个 crate (2.1 MB)
正在编译 libc v0.2.97
正在编译 autocfg v1.0.1
正在编译 crossbeam-utils v0.8.5
正在编译 lazy_static v1.4.0
正在编译 cfg-if v1.0.0
正在编译 memchr v2.4.0
正在编译 crossbeam-epoch v0.9.5
正在编译 scopeguard v1.1.0
正在编译 rayon-core v1.9.1
正在编译 bitflags v1.2.1
正在编译 unicode-width v0.1.8
正在编译 regex-syntax v0.6.25
正在编译 strsim v0.8.0
正在编译 ansi_term v0.11.0
正在编译 ansi_term v0.12.1
正在编译 either v1.6.1
正在编译 vec_map v0.8.2
正在编译 thousands v0.2.0
正在编译 lscolors v0.7.1
正在编译 memoffset v0.6.4
正在编译 rayon v1.5.1
正在编译 crossbeam-channel v0.5.1
正在编译 aho-corasick v0.7.18
正在编译 num_cpus v1.13.0
正在编译 term_size v0.3.2
正在编译 atty v0.2.14
正在编译 terminal_size v0.1.17
正在编译 textwrap v0.11.0
正在编译 regex v1.5.4
正在编译 clap v2.33.3
正在编译 crossbeam-deque v0.8.0
正在编译 stfu8 v0.2.4
正在编译 du-dust v0.6.0
在 1 分 13 秒内完成 release [优化的] 目标
正在安装 /usr/local/bin/cargo/bin/dust
已安装 package `du-dust v0.6.0`(可执行文件 `dust`)

回到我... 所有那些其他的项目是什么? 我尝试了上面列出的其他一些软件包的相同命令。 例子
$ sudo cargo install clap --root /usr/local/bin/cargo

现在我不知道是否需要继续指定 --root 选项,但是尝试安装这个项目,clap(无论那是什么),产生了以下错误消息
$ sudo cargo install clap --root /usr/local/bin/cargo
正在更新 crates.io 索引
error: 指定的 package `clap v2.33.3` 没有二进制文件

在得到这个错误几次后,你有点沮丧。 我怎样才能获得*真正*可供下载的二进制文件? 我是否需要始终指定 --root 选项?

唷! 太长了,但大部分都在引用我的输出。

这对我来说是新的。 看起来真不错。 干杯。

Creative Commons License本作品根据知识共享署名-相同方式共享 4.0 国际许可协议授权。
© . All rights reserved.