How to get the current free disk space in Bash?

本秂侑毒 提交于 2019-12-21 20:45:28

问题


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?


回答1:


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.




回答2:


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!