`du -s .` 和 `du -hs .` 给出不同的结果(在 OS X 上)

Cre*_*eak 12 osx coreutils

有和没有的区别-h应该只是人类可读的单位,对吧?

那么显然没有...

$ du -s .
74216696    .
$ du -hs .
 35G    .
Run Code Online (Sandbox Code Playgroud)

或者也许我错了,结果du -s .不在 KB 中?

Dop*_*oti 23

du如果没有输出格式说明符,则以 512 字节的为单位提供磁盘使用,而不是千字节。您可以使用该选项-k以千字节为单位显示。在 OS X(或 macOS、MacOS 或 Macos;无论您喜欢哪个)上,您可以通过设置环境变量来自定义默认单位BLOCKSIZE(这也会影响其他命令)。

  • *“任何文件都将占用磁盘上的整数个块。”* 好吧,通常是这样——除非你的文件系统使用 [**tail 打包**](https://en.wikipedia.org/wiki/Block_suballocation)。但是是的,块是文件系统的基本单位(尽管实际的块大小不一定与 `du` 使用的块大小一致。):) (3认同)
  • 块是文件系统的原子单位。任何文件都会消耗磁盘上的整数个块。一个块可能只填充了部分实际数据,但整个块都分配给了文件。大多数人的日常使用并不关心块,除了百分比使用与免费的意义。但是低级实用程序(例如`fdisk`、`df` 和`du`)在块中工作,除非另有指示,因为这是它们内部计数的单位。 (2认同)