如何在 Bash 中获取当前可用磁盘空间?

kra*_*r65 5 bash if-statement diskspace

我正在运行一些不断占用磁盘空间的操作。出于这个原因,我希望我的计算机在磁盘空间低于 2GB 时发出声音。我知道我可以通过运行获得列出可用磁盘空间的输出df -h

Filesystem                                      Size   Used  Avail Capacity   iused     ifree %iused  Mounted on
/dev/disk1                                     112Gi  100Gi   12Gi    90%  26291472   3038975   90%   /
devfs                                          191Ki  191Ki    0Bi   100%       663         0  100%   /dev
map -hosts                                       0Bi    0Bi    0Bi   100%         0         0  100%   /net
map auto_home                                    0Bi    0Bi    0Bi   100%         0         0  100%   /home
Run Code Online (Sandbox Code Playgroud)

但我无法在 if-then 语句中使用此输出,以便在可用可用空间低于 2GB 时播放声音。

有人知道我如何只获得可用空间而不是完整输出吗?

sor*_*rin 7

这是我能够获得可用磁盘空间量的唯一可移植方式(Linux 和 Mac OS):

df -Pk . | sed 1d | grep -v used | awk '{ print $4 "\t" }'
Run Code Online (Sandbox Code Playgroud)

请注意,dfLinux 与 Mac OS (OS X) 的不同,它们仅共享有限数量的选项。

这将返回以千字节为单位的可用磁盘空间量。不要尝试使用不同的度量,因为它们的选项不可移植。


hek*_*mgl 4

首先,可用磁盘空间取决于您正在使用的分区/文件系统。以下命令将打印当前文件夹中的可用磁盘空间:

TARGET_PATH="."
df -h "$TARGET_PATH"  | awk 'NR==2{print $4}'
Run Code Online (Sandbox Code Playgroud)

TARGET_PATH是您要写入的文件夹。df自动检测文件夹所属的文件系统。

  • 从“df”选项中删除“-h”会有所帮助:“df”。| awk 'NR==2{if($4<=2*1024*1024) print "可用空间 < 2 GB\a"}'` (3认同)