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选项控制显示的文件大小。