mirror of
https://github.com/samsonjs/bin.git
synced 2026-03-25 07:55:47 +00:00
56 lines
1.6 KiB
Bash
Executable file
56 lines
1.6 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
# dfn: df normalized, or df not noisy, or df nicely, or df new
|
|
#
|
|
# Whatever you want to call it, this script makes df useful again.
|
|
# It removes read-only disks for Time Machine backups, system volumes
|
|
# that can't be modified, unbrowsable volumes, and other stuff you don't
|
|
# really care about.
|
|
#
|
|
# Instead, you get the same drives that you see on your Mac desktop in an
|
|
# easy-to-read format. Use the options variable below to change the options
|
|
# used for output (for example, -h instead of -H).
|
|
|
|
# options used to show disk usage: no inodes and sizes in powers of 10
|
|
options="-PH"
|
|
|
|
if [ ! -z "$*" ]; then
|
|
echo "usage: edit options variable in `basename $0` script or use /bin/df"
|
|
exit 1
|
|
fi
|
|
|
|
# the only part of the root file system that's modifiable
|
|
system="/System/Volumes/Data"
|
|
|
|
# create an array of local disks (using mount name)
|
|
mount | \
|
|
grep -v "read-only" | grep -v "nobrowse" | grep -v "smbfs" | \
|
|
sed -E 's/.* on (.*) \(.*/\1/' > /tmp/disks
|
|
IFS=$'\n' read -d '' -r -a disks < /tmp/disks
|
|
declare -a local
|
|
for disk in "${disks[@]}"; do
|
|
# names in the array are quoted to preserve spaces in the names
|
|
local+=(`printf %q "$disk"`)
|
|
done
|
|
|
|
eval "/bin/df $options $system ${local[@]}"
|
|
|
|
# create an array of remote disks (using mount point)
|
|
mount | \
|
|
grep "smbfs" | \
|
|
sed 's/ on .*//' > /tmp/shares
|
|
IFS=$'\n' read -d '' -r -a shares < /tmp/shares
|
|
declare -a remote
|
|
for share in "${shares[@]}"; do
|
|
remote+=(`printf %q "$share"`)
|
|
done
|
|
|
|
if [ ${#remote[@]} -gt 0 ]; then
|
|
# remove the first line and filesystem prefixes from output
|
|
echo ""
|
|
eval "/bin/df $options ${remote[@]}" | sed '1d' | sed 's/^\/\/.*@//'
|
|
fi
|
|
|
|
# clean up
|
|
rm /tmp/disks /tmp/shares
|
|
|