TranslateProject/sources/tech/20210622 Replace du with dust on Linux.md
2021-06-24 09:04:44 +08:00

153 lines
17 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[#]: subject: (Replace du with dust on Linux)
[#]: via: (https://opensource.com/article/21/6/dust-linux)
[#]: author: (Sudeshna Sur https://opensource.com/users/sudeshna-sur)
[#]: collector: (lujun9972)
[#]: translator: (geekpi)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
Replace du with dust on Linux
======
The dust command is a more intuitive implementation of the du command
written in Rust.
![Sand dunes][1]
If you work on the Linux command line, you will be familiar with the `du` command. Knowing commands like `du`, which returns information about disk usage quickly, is one of the ways the command line makes programmers more productive. Yet if you're looking for a way to save even more time and make your life even easier, take a look at [dust][2], which is `du` rewritten in Rust with more intuitiveness.
In short, `dust` is a tool that provides a file's type and metadata. If you trigger `dust` in a directory, it will report that directory's disk utilization in a couple of ways. It provides a very informative graph that tells you which folder is using the most disk space. If there is a nested folder, you can see the percentage of space used by each folder.
### Install dust
You can install `dust` using Rust's Cargo package manager:
```
`$ cargo install du-dust`
```
Alternately, you might find it in your software repository on Linux, and on macOS, use [MacPorts][3] or [Homebrew][4].
### Explore dust
Issuing the `dust` command on a directory returns a graph that shows its contents and what percentage each item holds in a tree format.
```
$ 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%
$
```
To apply `dust` to a specific directory:
```
`$ dust ~/Work/`
```
![Dust output from a specific directory][5]
(Sudeshna Sur, [CC BY-SA 4.0][6])
The `-r` option shows the output in reverse order, with root at the bottom:
```
`$ dust -r ~/Work/`
```
Using `dust -d 3` returns three levels of subdirectories and their disk utilization:
```
`$ dust -d 3 ~/Work/wildfly/jaxrs/target/classes`[/code] [code]
$ 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%
$
```
### Conclusion
The beauty of `dust` lies in being a small, simple, and easy-to-understand command. It uses a color scheme to denote the largest subdirectories, making it easy to visualize your directory. It's a popular project, and contributions are welcome.
Have you used or considered using `dust`? If so, please let us know your thoughts in the comments below.
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/6/dust-linux
作者:[Sudeshna Sur][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/sudeshna-sur
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/sand_dunes_desert_hills_landscape_nature.jpg?itok=wUByylBb
[2]: https://github.com/bootandy/dust
[3]: https://opensource.com/article/20/11/macports
[4]: https://opensource.com/article/20/6/homebrew-mac
[5]: https://opensource.com/sites/default/files/uploads/dust-work.png (Dust output from a specific directory)
[6]: https://creativecommons.org/licenses/by-sa/4.0/