尝试理解du
命令的基础知识对我来说并不那么简单。例如,有此-h
选项定义为以“人类可读格式”打印。问题是此选项会更改显示的值:
~$ du --apparent-size -sh Documents/
376M Documents/
~$ du --apparent-size -s Documents/
384767 Documents/
通常 384767 应四舍五入为 385M。那么 376M 和 385M 哪个是正确的值?
更糟 :
~$ du -bsh Documents/
376M Documents/
~$ du -bs Documents/
394001294 Documents/
答案1
正常情况下 384767 应该四舍五入为 385M
如果除以 1000,是的,但这不是 du 向您显示的内容。它使用 IEC(二进制)单位,其中1kB = 1024字节;1 MB = 1024 kB;等等。其他一些程序会将其显示为 KiB、MiB 等。
(大多数存储适用于 2 的幂大小的块,例如 512b 或 4096b 扇区,因此 IEC 二进制单位比 SI 十进制单位更合适。)
不带“-h”选项的“du”的默认单位是 1024 字节块(相当于 1 kB),因此它会384767 / 1024 = 375.749…
四舍五入为 376 MB(或者如果您愿意,也可以是 MiB)。同样,当您使用“-b”选项以字节开头时,它就是394001294 / 1024 / 1024
。
--si
如果您想要十进制单位(“HDD 制造商”单位),请添加该选项。这也适用于df -h
和ls -lh
(即来自“coreutils”的工具),尽管不一定适用于其他程序 - 有些程序总是使用 IEC 单位而没有切换选项。