GNU块大小

来自泡泡学习笔记
跳到导航 跳到搜索

一些GNU程序(至少包括df、du和ls)以“块”为单位显示大小。你可以调整块大小和显示方法,使得大小更容易阅读。用于显示的块大小独立于任何文件系统的块大小。小数块计数会向上取整到最接近的整数。


默认的块大小是通过依次检查以下环境变量来选择的,其中第一个设置的确定了块大小。

  • DF_BLOCK_SIZE

这个环境变量指定了df命令的默认块大小。类似地,DU_BLOCK_SIZE指定了du命令的默认块大小,LS_BLOCK_SIZE指定了ls命令的默认块大小。


  • BLOCK_SIZE

如果没有设置上述命令特定的环境变量,那么该环境变量指定了所有三个命令的默认块大小。


  • BLOCKSIZE

如果既没有设置BLOCK_SIZE,也没有设置前面提到的命令特定的环境变量,那么该环境变量指定了通常作为块打印的所有值的默认块大小。与其他环境变量不同,BLOCKSIZE不影响通常作为字节计数打印的值,例如ls -l输出中包含的文件大小。


  • POSIXLY_CORRECT

如果既没有设置command_BLOCK_SIZE,也没有设置BLOCK_SIZE,也没有设置BLOCKSIZE,但设置了这个环境变量,则块大小默认为512。


如果没有设置以上任何环境变量,则在大多数情况下,块大小默认为1024字节,但这个数字可能在将来发生变化。对于ls文件大小,块大小默认为1字节。


块大小可以是指定每个块的字节数的正整数,也可以是可读的格式或si来选择一个可读的格式。整数后面可以跟随与十进制倍数的SI前缀兼容的后缀,或者与二进制倍数的ISO/IEC 80000-13(前身为IEC 60027-2)前缀兼容的后缀。


使用可读的格式时,输出大小后面跟着一个表示大小的字母,例如‘M’表示兆字节。BLOCK_SIZE=human-readable使用1024的幂次方;‘M’表示1048576字节。BLOCK_SIZE=si类似,但使用1000的幂次方,并附加‘B’;‘MB’表示1000000字节。


以'开头的块大小说明会导致输出大小以千位分隔符显示。LC_NUMERIC语言环境指定了千位分隔符和分组方式。例如,在美式英语区域设置中,‘--block-size="'1kB"’会使大小为1234000字节显示为‘1,234’。在默认的C区域设置中,没有千位分隔符,所以前导的‘'’没有任何影响。


整数块大小后面可以跟随后缀以指定该大小的倍数。裸的大小字母,或者后面跟着‘iB’的字母,使用1024的幂次方指定倍数。后面跟着‘B’的大小字母则使用1000的幂次方。例如,‘1M’和‘1MiB’等同于‘1048576’,而‘1MB’等同于‘1000000’。


没有前导整数的简单后缀会被视为有‘1’前缀,并且会导致输出附加大小指示。例如,‘--block-size="kB"’将3000显示为‘3kB’。


以下后缀是定义的。像1Q这样的大尺寸可能由于计算机的算术限制而被拒绝。


  • ‘kB’

kilobyte: 10^3 = 1000.


  • ‘k’
  • ‘K’
  • ‘KiB’

kibibyte: 2^{10} = 1024. ‘K’ is special: the SI prefix is ‘k’ and the ISO/IEC 80000-13 prefix is ‘Ki’, but tradition and POSIX use ‘k’ to mean ‘KiB’.


  • ‘MB’

megabyte: 10^6 = 1,000,000.


  • ‘M’
  • ‘MiB’

mebibyte: 2^{20} = 1,048,576.


  • ‘GB’

gigabyte: 10^9 = 1,000,000,000.


  • ‘G’
  • ‘GiB’

gibibyte: 2^{30} = 1,073,741,824.


  • ‘TB’

terabyte: 10^{12} = 1,000,000,000,000.


  • ‘T’
  • ‘TiB’

tebibyte: 2^{40} = 1,099,511,627,776.


  • ‘PB’

petabyte: 10^{15} = 1,000,000,000,000,000.


  • ‘P’
  • ‘PiB’

pebibyte: 2^{50} = 1,125,899,906,842,624.


  • ‘EB’

exabyte: 10^{18} = 1,000,000,000,000,000,000.


  • ‘E’
  • ‘EiB’

exbibyte: 2^{60} = 1,152,921,504,606,846,976.


  • ‘ZB’

zettabyte: 10^{21} = 1,000,000,000,000,000,000,000


  • ‘Z’
  • ‘ZiB’

zebibyte: 2^{70} = 1,180,591,620,717,411,303,424.


  • ‘YB’

yottabyte: 10^{24} = 1,000,000,000,000,000,000,000,000.


  • ‘Y’
  • ‘YiB’

yobibyte: 2^{80} = 1,208,925,819,614,629,174,706,176.


  • ‘RB’

ronnabyte: 10^{27} = 1,000,000,000,000,000,000,000,000,000.


  • ‘R’
  • ‘RiB’

robibyte: 2^{90} = 1,237,940,039,285,380,274,899,124,224.


  • ‘QB’

quettabyte: 10^{30} = 1,000,000,000,000,000,000,000,000,000,000.


  • ‘Q’
  • ‘QiB’

quebibyte: 2^{100} = 1,267,650,600,228,229,401,496,703,205,376.


请注意,块大小默认值可以通过明确的--block-size=size选项进行覆盖。-k选项等效于--block-size=1K,除非设置了POSIXLY_CORRECT环境变量,默认为该选项。-h或--human-readable选项等效于--block-size=human-readable。--si选项等效于--block-size=si。请注意,对于ls命令,-k选项不控制显示的文件大小,而--block-size选项控制显示的文件大小。