10

Linux中有许多程序会显示文件的大小,其中一些以块为单位,一些以字节为单位。但是当涉及到一些人类可读的形式时,比如 ls -sh、lvs、dd bs=size 等等,当我们看到一个 kb、KB、mB、MB、K 时,我们如何确定它是 1024 还是 1000 的倍数, G 等。有些用 lvs 之类的大写来区分它们,有些用 dd 之类的不同字符来区分,但是,这些事情有没有一般规则,因为我到目前为止找不到。谢谢。

4

1 回答 1

14

如果您查看man units,您会看到对这两种类型的单位的描述。十进制和二进制。千字节 (KB) 和兆字节 (MB) 等十进制单位是 1000 (10^3)​​ 的倍数,而千字节 (KiB) 和兆字节 (MiB) 等二进制单位是 1024 (2^10) 的倍数。

如果显示的单位包含二进制前缀,如 KiB、MiB、GiB,您可以确定它是 1024。对于不明确的单位,一般的经验法则:

  • 硬盘驱动器尺寸以十进制单位进行广告宣传,因为制造商喜欢让它们看起来更大。因此,存储在磁盘上并通过网络传输的文件的大小通常与此一致。
  • 内存大小以二进制单位公布
  • 任何与数据无关的内容(以 KHz 为单位的频率等)始终为十进制

Ubuntu在 2010 年为其单位发布了一项政策,该政策似乎在 Linux 发行版中相当一致,但不能保证:

  • 将 base-10 用于:

    • 网络带宽(例如,6 Mbit/s 或 50 kB/s)
    • 磁盘大小(例如,500 GB 硬盘或 4.7 GB DVD)
  • 将 base-2 用于:

    • RAM 大小(例如,2 GiB RAM)

对于文件大小,有两种可能性:

  • 显示 base-10 和 base-2(按此顺序)。一个例子是 Linux 内核:“2930277168 512 字节硬件扇区:(1.50 TB/1.36 TiB)”
  • 只显示 base-10,或者让用户有机会在 base-10 和 base-2 之间做出选择(默认必须是 base-10)。1

1正如Kris Avi在评论中指出的,在此政策之前开发的一些命令行工具可能仅使用 base-2 值但表示十进制单位,并且可能没有更改以避免破坏现有的解析脚本。

于 2016-05-02T22:48:32.863 回答