2025-08-26 23:03:13 +02:00
|
|
|
#!/bin/sh
|
2025-08-25 16:59:25 +02:00
|
|
|
# script-friendly df
|
|
|
|
|
2025-08-26 23:03:13 +02:00
|
|
|
factor=1024 # for the default (GiB); use -H for GB
|
2025-08-25 16:59:25 +02:00
|
|
|
|
2025-08-26 23:03:13 +02:00
|
|
|
optstring="H"
|
|
|
|
while getopts "$optstring" opt; do
|
|
|
|
case $opt in
|
|
|
|
h) factor=1024 ;; # default (GiB)
|
|
|
|
H) factor=1000 ;; # decimal (GB)
|
2025-08-25 16:59:25 +02:00
|
|
|
esac
|
|
|
|
done
|
|
|
|
shift $((OPTIND-1))
|
|
|
|
|
|
|
|
target=${1:-.}
|
|
|
|
|
2025-08-26 23:03:13 +02:00
|
|
|
if free_bytes=$(stat -f --format="%a*%S" "$target" 2>/dev/null); then
|
|
|
|
# GNU stat (Linux)
|
|
|
|
:
|
|
|
|
elif free_bytes=$(stat -f "%a*%S" "$target" 2>/dev/null); then
|
|
|
|
# BSD/macOS stat
|
|
|
|
:
|
|
|
|
else
|
|
|
|
# BusyBox stat fallback
|
|
|
|
free_bytes=$(stat -f "$target" | awk '/Block size:/ {bs=$3} /Available:/ {av=$2} END {print av*bs}')
|
|
|
|
fi
|
|
|
|
|
|
|
|
free_gb=$((free_bytes / factor / factor / factor))
|
|
|
|
echo "$free_gb"
|