This process is very helpful to format a disk that has multiple partitions on it like a Raspberry Pi SD Card.
This script can be updated to allow a different type of format (JHFS+ instead of FAT32) but for now it serves my purpose.
#!/bin/sh
# FormatSDCard.sh
#
#
# Created by David Kittell on 6/11/19.
#
diskutil list | grep '/dev/disk' -A2
# Ask User what disk should be formatted
# say "What disk would you like to format?. Copy/Paste or type in the disk path followed by [ENTER]"
printf "What disk would you like to format?\nCopy/Paste or type in the disk path (ex. /dev/disk2) followed by [ENTER]:\n"
read sDisk
#echo "$sDisk provided"
if [ ! -z "$sDisk" ]
then
sDiskSpace="$(diskutil list | grep $sDisk -A2 | grep -v $sDisk | grep -v 'SIZE' | tr -s " " | cut -d ' ' -f4 | sed 's|[+*]||g') $(diskutil list | grep $sDisk -A2 | grep -v $sDisk | grep -v 'SIZE' | tr -s " " | cut -d ' ' -f5)"
echo $sDiskSpace
clear
# Ask User if they are sure they want to format the disk
# say "Are you sure you want to format $sDisk ($sDiskSpace), if yes type y or if no type n followed by [ENTER]"
printf "Are you sure you want to format $sDisk ($sDiskSpace), if yes type y or if no type n followed by [ENTER]:\n"
read sDiskConfirm
#echo "$sDiskConfirm"
case $sDiskConfirm in
[yY])
# Ask User if they are sure they want to format the disk
# say "Do you want to do a secure format $sDisk ($sDiskSpace), if yes type y or if no (regular format) type n followed by [ENTER]"
printf "Do you want to do a secure format $sDisk ($sDiskSpace), if yes type y or if no (regular format) type n followed by [ENTER]:\n"
read sDiskFormatType
#echo "$sDiskFormatType"
case $sDiskFormatType in
[yY])
sudo diskutil unmountDisk $sDisk && say "Unmount of disk completed"
# sudo dd if=/dev/urandom of=$sDisk bs=1000000 && say "Disk Ready"
sudo diskutil zeroDisk $sDisk && say "Disk Ready"
sudo diskutil secureErase "ms-dos fat32" EMPTY MBRFormat $sDisk && say "Disk Is Formatted" # If you want to securely format the disk
;;
[nN])
sudo diskutil unmountDisk $sDisk && say "Unmount of disk completed"
# sudo dd if=/dev/urandom of=$sDisk bs=1000000 && say "Disk Ready"
sudo diskutil zeroDisk $sDisk && say "Disk Ready"
sudo diskutil eraseDisk "ms-dos fat32" EMPTY MBRFormat $sDisk && say "Disk Is Formatted"
;;
*)
clear
# say "You did not provide a choice. Format of $sDisk ($sDiskSpace) aborted."
echo "You did not provide a choice\nFormat of $sDisk ($sDiskSpace) aborted."
;;
esac
;;
[nN])
clear
# say "Format of $sDisk ($sDiskSpace) aborted."
echo "Format of $sDisk ($sDiskSpace) aborted."
;;
*)
clear
# say "You did not confirm. Format of $sDisk ($sDiskSpace) aborted."
echo "You did not confirm\nFormat of $sDisk ($sDiskSpace) aborted."
;;
esac
else
clear
# say "You did not provide a disk, aborting script"
echo "You did not provide a disk, aborting script"
fi
All information on this site is shared with the intention to help. Before any source code or program is ran on a production (non-development) system it is suggested you test it and fully understand what it is doing not just what it appears it is doing. I accept no responsibility for any damage you may do with this code.