Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get the current free disk space in Bash?

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?

like image 832
kramer65 Avatar asked Jan 13 '14 08:01

kramer65


2 Answers

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.

like image 184
sorin Avatar answered Sep 22 '22 17:09

sorin


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.

like image 23
hek2mgl Avatar answered Sep 22 '22 17:09

hek2mgl