I'm running some operations which constantly eat up my disk space. For this reason I want my computer to make a sound when disk space is running below 2GB. I know I can get an output listing the free diskspace by running 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
but I can't use this output in an if-then statement so that I can play a sound when the Available free space drops below 2GB.
Does anybody know how I can get only the Available space instead of this full output?
First, the available disk space depends on the partition/filesystem you are working on. The following command will print the available disk space in the current folder:
TARGET_PATH="."
df -h "$TARGET_PATH" | awk 'NR==2{print $4}'
TARGET_PATH
is the folder you are about writing to. df
automatically detects the filesystem the folder belongs to.
This was the only portable way (Linux and Mac OS) in which I was able to get the amount of free disk space:
df -Pk . | sed 1d | grep -v used | awk '{ print $4 "\t" }'
Be aware that df
from Linux is different than the one from Mac OS (OS X) and they share only a limited amount of options.
This returns the amount of free disk space in kilobytes. Don't try to use a different measure because they options are not portable.
来源:https://stackoverflow.com/questions/21087075/how-to-get-the-current-free-disk-space-in-bash