Mac 终端 df 命令是我用来获取磁盘空间的工具。例如,在获得新软件或更新之前,我也会记录安装前后的硬盘空间。
我记得我曾将此命令与 -b、-k、-m 或 -g 选项一起使用,以获取 512 字节块、千字节、兆字节或千兆字节的大小。根据 df 的 man(手册说明),这些选项也可能会更改 BLOCKSIZE,因此如果我随后使用“df -h”或“df -H”,结果将是二进制或十进制的大小。我记得以前尝试过这个,效果很好。
最近,我尝试使用“df -b”重置 BLOCKSIZE。然后我再次尝试“df -h”或“df -H”,我得到的大小值全部为 GB(二进制或十进制),而不是预期的 512 字节。然后我尝试使用“df -hb”或“df -Hb”,结果值相同(512 字节块)。
以下是我之前举过的一些例子:
$ df -k # this command I get the expected result: 1024-block
Filesystem 512-blocks Used Available ...
/dev/disk1s2 97101344 403566296 572023048 ...
....
$ df -h # the result in binary base, value in 1024-block
Filesystem 1024-blocks Used Avail ...
/dev/disk1s2 97101344 403566296 572023048 ...
....
$ df -H # the result in decimal base, value in 1,000 base
Filesystem Size Used Avail ...
/dev/disk1s2 99431776 413251887 585751601 ...
....
如上例所示,“df -k”将 BLOSKSIZE 重置为千字节。但是现在我重复这些相同的命令,却无法得到相同的结果:
$ df -k # this command I get the expected result: 1024-block
Filesystem 512-blocks Used Avail ...
/dev/disk1s2 97101344 403566296 572023048 ...
...
$ df -h # the result in binary base but values in Gigabytes
Filesystem Size Used Avail ...
/dev/disk1s2 465Gi 192Gi 273Gi ...
....
$ df -H # the result in decimal base by values in Gigabytes
Filesystem Size Used Avail ...
/dev/disk1s2 500G 207G 293G ...
....
我不确定是什么阻止了 BLOCKSIZE 值被重置。因此,我无法获取十进制基数的大小(十进制基数中 1000 表示千字节,十进制基数中 1,000,000 表示兆字节,...)。
顺便说一句,我从以下位置获取了有关 df 和 BLOCKSIZE 用法的信息:
$ man df
答案1
我认为你对命令过去工作方式的记忆是错误的;df
它从未改变BLOCKSIZE
,只是暂时覆盖了它。事实上,它不能改变BLOCKSIZE
除其自身以外的任何事物——如果运行df
3 次,每个实例都会获得其自己的 shell 环境副本,并且可以修改其自己的副本,但不能对 shell 的环境(或其他实例的环境)执行任何操作。
话虽如此,我认为获得所需行为的唯一方法是BLOCKSIZE
在 shell 的环境中实际进行更改:
export BLOCKSIZE=1000000 # Base-10 Megabytes
df # No flags, so it uses the inherited BLOCKSIZE
请注意,这种方式会产生您描述的持久行为;在BLOCKSIZE
为父 shell 设置后,它会传递给全部从那时起,您在该 shell 中运行的命令(直到/除非您再次更改它)。如果您只想为特定命令更改它,请使用以下命令:
BLOCKSIZE=1000000 df # Displays in base-10 Megabytes
df # Displays in the default format
答案2
这应该使用默认的 512 字节块:
df -P
如果使用人类可读的格式,一旦显示的数量足以进行下一次测量,它就会以该格式显示(例如 1024M -> 1G)