在Linux中获得硬盘的自由空间

在一个bash脚本中,我需要获得总磁盘大小和当前使用的完整磁盘大小。

我知道我可以得到总的磁盘大小,而不需要这个命令的根:

cat /sys/block/sda/size 

该命令将输出设备SDA上的块数。 乘以512,你会得到这个设备上的字节数量。 这对于总磁盘大小已经足够了。

现在用于当前使用的空间。 我想获得这个价值,而不是根。 我可以假设设备名称是SDA。 现在有这个命令: df我以为我可以使用这个命令,但似乎这个命令只输出当前安装的分区的数据。

有没有办法获得磁盘SDA上使用的空间总量,而不需要成为root用户,而不是所有的分区都需要安装?

我们假设下面的例子:

 /dev/sda1 80GB Linux partition 20GB Used /dev/sda2 80GB Linux Home partition 20GB Used /dev/sda3 100GB Windows Parition. 30GB Used 

假设我的SDA磁盘被分割如上。 但是,当我在Linux上我的Windows分区(SDA3)没有安装。

df的输出会给我一个总共40 GB的使用,所以它不占用sda3。

还有一个问题:有没有一种方法可以让我总共使用70GB的空间?

我认为stat命令应该有所帮助。 你可以从/proc/partitions得到/proc/partitions

样例stat命令输出:

 $ stat -f /dev/sda1 File: "/dev/sda1" ID: 0 Namelen: 255 Type: tmpfs Block size: 4096 Fundamental block size: 4096 Blocks: Total: 237009 Free: 236970 Available: 236970 Inodes: Total: 237009 Free: 236386 

你可以使用df

 df -h --output='used' /home Used 3.2G 

如果你把这个和sedawk结合起来,你可以得到你想要的值