终端 df 命令

终端 df 命令

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除其自身以外的任何事物——如果运行df3 次,每个实例都会获得其自己的 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)

相关内容