#!/bin/bash mapfile -t mountpoints < <( df -h | grep ^/dev/ | grep -v efi | awk '{print $6;}' ) IFS=$'\n' mountpoints=($(sort <<<"${mountpoints[*]}")) unset IFS barWidth=38 maxDiscUsage=85 midDiscUsage=45 clear="\e[39m\e[0m" ok="\e[32m" alert="\e[33m" warn="\e[31m" barclear="" echo echo 'HDD free:' for point in "${mountpoints[@]}"; do line=$(df -h "${point}") # IFS=" " read fs size used avail use mount $(df -h "${point}") usagePercent=$(echo "$line"|tail -n1|awk '{print $5;}'|sed 's/%//') usedBarWidth=$((($usagePercent*$barWidth)/100)) barContent="" color="${ok}" if [ "${usagePercent}" -ge "${maxDiscUsage}" ]; then color="${warn}" elif [ "${usagePercent}" -ge "${midDiscUsage}" ]; then color="${alert}" fi barContent="${color}" for sep in $(seq 1 $usedBarWidth); do barContent="${barContent}―" done barContent="${barContent}${clear}" for sep in $(seq 1 $(($barWidth-$usedBarWidth))); do barContent="${barContent}―" done bar=" ${barContent}${clear}" echo "${point}" | awk '{printf(" %-12s", $1); }' echo "${line}" | awk '{if ($1 != "Filesystem") printf("%+8s used out of %+5s\n", $3, $2); }' echo -e "${bar}" done