feat: clean up scripts

This commit is contained in:
Saravana Dhandapani 2025-05-21 21:43:59 -07:00
parent ab0eda729b
commit 6d9f4f39a8
3 changed files with 802 additions and 0 deletions

136
clean_chrome.sh Executable file
View File

@ -0,0 +1,136 @@
#!/bin/bash
# Script to safely remove Google Chrome and all its data
# This will remove the Chrome application, cache, and user data
# Color codes for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Print with color
print_info() {
echo -e "${BLUE}INFO: $1${NC}"
}
print_warning() {
echo -e "${YELLOW}WARNING: $1${NC}"
}
print_error() {
echo -e "${RED}ERROR: $1${NC}"
}
print_success() {
echo -e "${GREEN}SUCCESS: $1${NC}"
}
# Check if Chrome is running
if pgrep "Google Chrome" > /dev/null; then
print_error "Google Chrome is currently running."
print_info "Please close Chrome completely before running this script."
exit 1
fi
# Paths to Chrome resources
CHROME_APP="/Applications/Google Chrome.app"
CHROME_CACHE="$HOME/Library/Caches/Google/Chrome"
CHROME_USER_DATA="$HOME/Library/Application Support/Google/Chrome"
# Check if Chrome is installed
if [ ! -d "$CHROME_APP" ]; then
print_error "Google Chrome is not installed at $CHROME_APP."
exit 1
fi
# Calculate space before deletion
print_info "Calculating space used by Chrome..."
CHROME_APP_SIZE=$(du -sk "$CHROME_APP" | cut -f1)
CHROME_CACHE_SIZE=0
CHROME_USER_DATA_SIZE=0
if [ -d "$CHROME_CACHE" ]; then
CHROME_CACHE_SIZE=$(du -sk "$CHROME_CACHE" | cut -f1)
fi
if [ -d "$CHROME_USER_DATA" ]; then
CHROME_USER_DATA_SIZE=$(du -sk "$CHROME_USER_DATA" | cut -f1)
fi
TOTAL_SIZE_KB=$((CHROME_APP_SIZE + CHROME_CACHE_SIZE + CHROME_USER_DATA_SIZE))
TOTAL_SIZE_MB=$((TOTAL_SIZE_KB / 1024))
TOTAL_SIZE_GB=$(echo "scale=2; $TOTAL_SIZE_KB/1048576" | bc)
print_info "Chrome is currently using approximately $TOTAL_SIZE_GB GB of space:"
echo " - Chrome Application: $((CHROME_APP_SIZE / 1024)) MB"
echo " - Chrome Cache: $((CHROME_CACHE_SIZE / 1024)) MB"
echo " - Chrome User Data: $((CHROME_USER_DATA_SIZE / 1024)) MB"
# Warning about data loss
print_warning "This will permanently delete Chrome and all its data, including:"
echo " - Browsing history"
echo " - Saved passwords (unless synced with your Google account)"
echo " - Bookmarks (unless synced with your Google account)"
echo " - Extensions and their data"
echo " - Any other user preferences and data"
# Ask for confirmation
echo
echo "Are you sure you want to proceed with deletion? (yes/no)"
read -r CONFIRM
if [[ ! "$CONFIRM" =~ ^[Yy][Ee][Ss]$ ]]; then
print_info "Operation cancelled. No changes were made."
exit 0
fi
# Begin deletion
print_info "Beginning Chrome cleanup..."
# Remove Chrome application
print_info "Removing Chrome application..."
print_info "This requires administrator privileges. You'll be prompted for your password."
if sudo rm -rf "$CHROME_APP"; then
print_success "Chrome application removed successfully."
else
print_error "Failed to remove Chrome application."
fi
# Remove Chrome cache
if [ -d "$CHROME_CACHE" ]; then
print_info "Removing Chrome cache..."
if rm -rf "$CHROME_CACHE"; then
print_success "Chrome cache removed successfully."
else
print_error "Failed to remove Chrome cache."
fi
else
print_info "Chrome cache directory not found. Skipping."
fi
# Remove Chrome user data
if [ -d "$CHROME_USER_DATA" ]; then
print_info "Removing Chrome user data..."
if rm -rf "$CHROME_USER_DATA"; then
print_success "Chrome user data removed successfully."
else
print_error "Failed to remove Chrome user data."
fi
else
print_info "Chrome user data directory not found. Skipping."
fi
# Final cleanup
print_info "Cleaning up any remaining Chrome preferences..."
rm -rf "$HOME/Library/Preferences/com.google.Chrome"*
rm -rf "$HOME/Library/Saved Application State/com.google.Chrome.savedState"
# Success message
print_success "Chrome cleanup completed!"
print_success "Reclaimed approximately $TOTAL_SIZE_GB GB of disk space."
print_info "If you want to reinstall Chrome, you can download it from https://www.google.com/chrome/"
exit 0

660
cleanup.sh Executable file
View File

@ -0,0 +1,660 @@
#!/bin/bash
# ==========================================
# System Cleanup Script for macOS
# ==========================================
#
# This script helps clean up various caches and temporary files to free up disk space.
# Use with caution - while this script tries to be safe, it's always good to have backups.
#
# Features:
# - Clean development tool caches (Homebrew, npm, pip, etc.)
# - Clean browser caches (Chrome, Firefox, Safari)
# - Clean application caches
# - Clean system caches and logs
# - Interactive menu to choose what to clean
# - Size reporting before and after cleaning
#
# Author: Saravana
# Created: 2025-05-21
# ==========================================
# ==========================================
# Color Definitions
# ==========================================
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
PURPLE='\033[0;35m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color
# ==========================================
# Helper Functions
# ==========================================
# Print with color
print_header() {
echo -e "\n${CYAN}===== $1 =====${NC}\n"
}
print_info() {
echo -e "${BLUE}INFO: $1${NC}"
}
print_warning() {
echo -e "${YELLOW}WARNING: $1${NC}"
}
print_error() {
echo -e "${RED}ERROR: $1${NC}"
}
print_success() {
echo -e "${GREEN}SUCCESS: $1${NC}"
}
print_size() {
path="$1"
if [ -e "$path" ]; then
size=$(du -sh "$path" 2>/dev/null | cut -f1)
echo -e "${PURPLE}Size of $path: $size${NC}"
else
echo -e "${PURPLE}$path does not exist${NC}"
fi
}
# Check if a directory exists and has content
check_directory() {
local dir="$1"
if [ -d "$dir" ] && [ "$(ls -A "$dir" 2>/dev/null)" ]; then
return 0
else
return 1
fi
}
# Get directory size in human-readable format
get_dir_size() {
local dir="$1"
if [ -d "$dir" ]; then
du -sh "$dir" 2>/dev/null | cut -f1
else
echo "0B"
fi
}
# Get directory size in bytes
get_dir_size_bytes() {
local dir="$1"
if [ -d "$dir" ]; then
du -s "$dir" 2>/dev/null | cut -f1
else
echo "0"
fi
}
# Get free disk space
get_free_space() {
df -h . | awk 'NR==2 {print $4}'
}
# Confirm action
confirm() {
local prompt="$1"
local default="$2"
if [ "$default" = "y" ]; then
local prompt_text="${prompt} [Y/n] "
else
local prompt_text="${prompt} [y/N] "
fi
read -p "$prompt_text" response
if [ -z "$response" ]; then
response="$default"
fi
if [[ "$response" =~ ^[Yy]$ ]]; then
return 0
else
return 1
fi
}
# ==========================================
# Cleanup Functions
# ==========================================
# Clean Development Tool Caches
clean_dev_caches() {
print_header "Cleaning Development Tool Caches"
# Homebrew
if check_directory "$HOME/homebrew/Caches" || check_directory "$HOME/Library/Caches/Homebrew"; then
print_info "Cleaning Homebrew caches..."
before_size=$(get_dir_size "$HOME/Library/Caches/Homebrew")
if confirm "Run 'brew cleanup' to remove old versions and downloads? This will free up space but require re-downloading if needed again." "y"; then
brew cleanup -s
rm -rf "$HOME/Library/Caches/Homebrew"/*
print_success "Homebrew cache cleaned. Before: $before_size, After: $(get_dir_size "$HOME/Library/Caches/Homebrew")"
fi
fi
# Node/npm
if check_directory "$HOME/.npm"; then
print_info "Cleaning npm cache..."
before_size=$(get_dir_size "$HOME/.npm")
if confirm "Clean npm cache?" "y"; then
npm cache clean --force
print_success "npm cache cleaned. Before: $before_size, After: $(get_dir_size "$HOME/.npm")"
fi
fi
# pnpm
if check_directory "$HOME/.pnpm-store" || check_directory "$HOME/Library/Caches/pnpm"; then
print_info "Cleaning pnpm cache..."
before_size=$(get_dir_size "$HOME/.pnpm-store")
before_size2=$(get_dir_size "$HOME/Library/Caches/pnpm")
if confirm "Clean pnpm cache?" "y"; then
if command -v pnpm &>/dev/null; then
pnpm store prune
fi
rm -rf "$HOME/Library/Caches/pnpm"/*
print_success "pnpm cache cleaned. Before: $before_size + $before_size2, After: $(get_dir_size "$HOME/.pnpm-store") + $(get_dir_size "$HOME/Library/Caches/pnpm")"
fi
fi
# Yarn
if check_directory "$HOME/.yarn/cache"; then
print_info "Cleaning Yarn cache..."
before_size=$(get_dir_size "$HOME/.yarn/cache")
if confirm "Clean Yarn cache?" "y"; then
if command -v yarn &>/dev/null; then
yarn cache clean
fi
print_success "Yarn cache cleaned. Before: $before_size, After: $(get_dir_size "$HOME/.yarn/cache")"
fi
fi
# pip
if check_directory "$HOME/Library/Caches/pip"; then
print_info "Cleaning pip cache..."
before_size=$(get_dir_size "$HOME/Library/Caches/pip")
if confirm "Clean pip cache?" "y"; then
if command -v pip &>/dev/null; then
pip cache purge
fi
rm -rf "$HOME/Library/Caches/pip"/*
print_success "pip cache cleaned. Before: $before_size, After: $(get_dir_size "$HOME/Library/Caches/pip")"
fi
fi
# Cypress
if check_directory "$HOME/Library/Caches/Cypress"; then
print_info "Cleaning Cypress cache..."
before_size=$(get_dir_size "$HOME/Library/Caches/Cypress")
if confirm "Clean Cypress cache? This includes browser binaries that will need to be re-downloaded." "y"; then
rm -rf "$HOME/Library/Caches/Cypress"/*
print_success "Cypress cache cleaned. Before: $before_size, After: $(get_dir_size "$HOME/Library/Caches/Cypress")"
fi
fi
# Playwright
if check_directory "$HOME/Library/Caches/ms-playwright"; then
print_info "Cleaning Playwright browsers cache..."
before_size=$(get_dir_size "$HOME/Library/Caches/ms-playwright")
if confirm "Clean Playwright browsers cache? These will need to be re-downloaded if used again." "y"; then
rm -rf "$HOME/Library/Caches/ms-playwright"/*
print_success "Playwright cache cleaned. Before: $before_size, After: $(get_dir_size "$HOME/Library/Caches/ms-playwright")"
fi
fi
# Gradle
if check_directory "$HOME/.gradle/caches"; then
print_info "Cleaning Gradle cache..."
before_size=$(get_dir_size "$HOME/.gradle/caches")
if confirm "Clean Gradle cache?" "y"; then
rm -rf "$HOME/.gradle/caches"/*
print_success "Gradle cache cleaned. Before: $before_size, After: $(get_dir_size "$HOME/.gradle/caches")"
fi
fi
# CocoaPods
if check_directory "$HOME/Library/Caches/CocoaPods"; then
print_info "Cleaning CocoaPods cache..."
before_size=$(get_dir_size "$HOME/Library/Caches/CocoaPods")
if confirm "Clean CocoaPods cache?" "y"; then
rm -rf "$HOME/Library/Caches/CocoaPods"/*
print_success "CocoaPods cache cleaned. Before: $before_size, After: $(get_dir_size "$HOME/Library/Caches/CocoaPods")"
fi
fi
# Go modules
if check_directory "$HOME/go/pkg/mod"; then
print_info "Cleaning Go module cache..."
before_size=$(get_dir_size "$HOME/go/pkg/mod")
if confirm "Clean Go module cache? These will be re-downloaded when needed." "y"; then
if command -v go &>/dev/null; then
go clean -modcache
fi
print_success "Go module cache cleaned. Before: $before_size, After: $(get_dir_size "$HOME/go/pkg/mod")"
fi
fi
}
# Clean Browser Caches
clean_browser_caches() {
print_header "Cleaning Browser Caches"
# Check and close browsers first
for browser in "Firefox" "Google Chrome" "Safari" "Microsoft Edge" "Brave Browser"; do
if pgrep "$browser" >/dev/null; then
print_warning "$browser is currently running."
if confirm "Would you like to close $browser before cleaning its cache?" "y"; then
osascript -e "tell application \"$browser\" to quit"
sleep 2
else
print_warning "Skipping $browser cleanup to avoid potential issues."
continue
fi
fi
case "$browser" in
"Firefox")
if check_directory "$HOME/Library/Caches/Firefox"; then
print_info "Cleaning Firefox cache..."
before_size=$(get_dir_size "$HOME/Library/Caches/Firefox")
if confirm "Clean Firefox cache?" "y"; then
rm -rf "$HOME/Library/Caches/Firefox"/*
print_success "Firefox cache cleaned. Before: $before_size, After: $(get_dir_size "$HOME/Library/Caches/Firefox")"
fi
fi
;;
"Google Chrome")
if check_directory "$HOME/Library/Caches/Google/Chrome"; then
print_info "Cleaning Chrome cache..."
before_size=$(get_dir_size "$HOME/Library/Caches/Google/Chrome")
if confirm "Clean Chrome cache?" "y"; then
rm -rf "$HOME/Library/Caches/Google/Chrome"/*
print_success "Chrome cache cleaned. Before: $before_size, After: $(get_dir_size "$HOME/Library/Caches/Google/Chrome")"
fi
fi
;;
"Safari")
if check_directory "$HOME/Library/Caches/com.apple.Safari"; then
print_info "Cleaning Safari cache..."
if confirm "Clean Safari cache?" "y"; then
print_warning "Safari caches require administrator privileges."
if confirm "Run with sudo (will prompt for password)?" "n"; then
sudo rm -rf "$HOME/Library/Caches/com.apple.Safari"/*
print_success "Safari cache cleaned."
fi
fi
fi
;;
"Microsoft Edge")
if check_directory "$HOME/Library/Caches/Microsoft Edge"; then
print_info "Cleaning Microsoft Edge cache..."
before_size=$(get_dir_size "$HOME/Library/Caches/Microsoft Edge")
if confirm "Clean Microsoft Edge cache?" "y"; then
rm -rf "$HOME/Library/Caches/Microsoft Edge"/*
print_success "Microsoft Edge cache cleaned. Before: $before_size, After: $(get_dir_size "$HOME/Library/Caches/Microsoft Edge")"
fi
fi
;;
"Brave Browser")
if check_directory "$HOME/Library/Caches/BraveSoftware/Brave-Browser"; then
print_info "Cleaning Brave Browser cache..."
before_size=$(get_dir_size "$HOME/Library/Caches/BraveSoftware/Brave-Browser")
if confirm "Clean Brave Browser cache?" "y"; then
rm -rf "$HOME/Library/Caches/BraveSoftware/Brave-Browser"/*
print_success "Brave Browser cache cleaned. Before: $before_size, After: $(get_dir_size "$HOME/Library/Caches/BraveSoftware/Brave-Browser")"
fi
fi
;;
esac
done
}
# Clean Application Caches
clean_app_caches() {
print_header "Cleaning Application Caches"
# Check for common application caches
cache_dir="$HOME/Library/Caches"
# List large application caches
print_info "Scanning for large application caches..."
# Get top 10 largest cache directories
large_caches=$(find "$cache_dir" -type d -maxdepth 1 2>/dev/null | xargs du -sh 2>/dev/null | sort -hr | head -n 10)
echo -e "${YELLOW}Largest application caches:${NC}"
echo "$large_caches"
echo
# Spotify
if check_directory "$HOME/Library/Caches/com.spotify.client"; then
print_info "Cleaning Spotify cache..."
before_size=$(get_dir_size "$HOME/Library/Caches/com.spotify.client")
if confirm "Clean Spotify cache? This may remove offline songs." "n"; then
rm -rf "$HOME/Library/Caches/com.spotify.client"/*
print_success "Spotify cache cleaned. Before: $before_size, After: $(get_dir_size "$HOME/Library/Caches/com.spotify.client")"
fi
fi
# Slack
if check_directory "$HOME/Library/Caches/com.tinyspeck.slackmacgap"; then
print_info "Cleaning Slack cache..."
before_size=$(get_dir_size "$HOME/Library/Caches/com.tinyspeck.slackmacgap")
if confirm "Clean Slack cache?" "y"; then
rm -rf "$HOME/Library/Caches/com.tinyspeck.slackmacgap"/*
print_success "Slack cache cleaned. Before: $before_size, After: $(get_dir_size "$HOME/Library/Caches/com.tinyspeck.slackmacgap")"
fi
fi
# Visual Studio Code
if check_directory "$HOME/Library/Caches/com.microsoft.VSCode"; then
print_info "Cleaning VS Code cache..."
before_size=$(get_dir_size "$HOME/Library/Caches/com.microsoft.VSCode")
if confirm "Clean VS Code cache?" "y"; then
rm -rf "$HOME/Library/Caches/com.microsoft.VSCode"/*
print_success "VS Code cache cleaned. Before: $before_size, After: $(get_dir_size "$HOME/Library/Caches/com.microsoft.VSCode")"
fi
fi
# Docker
if check_directory "$HOME/Library/Containers/com.docker.docker"; then
print_info "Found Docker containers cache..."
before_size=$(get_dir_size "$HOME/Library/Containers/com.docker.docker")
if confirm "Would you like to see Docker disk usage? (This will run 'docker system df')" "y"; then
if command -v docker &>/dev/null; then
docker system df
if confirm "Clean unused Docker data? (This will run 'docker system prune')" "n"; then
docker system prune -f
print_success "Docker unused data cleaned."
fi
else
print_error "Docker command not found."
fi
fi
fi
# Clean other large caches
if confirm "Would you like to see and clean other large application caches?" "y"; then
print_info "Select cache directories to clean (enter numbers separated by space):"
# Get all cache directories
cache_dirs=()
while IFS= read -r line; do
cache_dirs+=("$line")
done < <(find "$cache_dir" -type d -maxdepth 1 2>/dev/null | sort)
# Get sizes for each directory
cache_sizes=()
for dir in "${cache_dirs[@]}"; do
if [ -d "$dir" ]; then
size=$(du -sh "$dir" 2>/dev/null | cut -f1)
cache_sizes+=("$size")
else
cache_sizes+=("")
fi
done
# Display directories with their sizes
for i in "${!cache_dirs[@]}"; do
if [ -n "${cache_sizes[$i]}" ] && [ "${cache_dirs[$i]}" != "$cache_dir" ]; then
echo "$i) ${cache_sizes[$i]} - ${cache_dirs[$i]}"
fi
done
read -p "Enter numbers to clean (or 'all' for all, 'skip' to skip): " selections
if [ "$selections" = "all" ]; then
for i in "${!cache_dirs[@]}"; do
if [ "${cache_dirs[$i]}" != "$cache_dir" ] && [ -d "${cache_dirs[$i]}" ]; then
dir_name=$(basename "${cache_dirs[$i]}")
if confirm "Clean $dir_name (${cache_sizes[$i]})?" "n"; then
before_size=$(get_dir_size "${cache_dirs[$i]}")
rm -rf "${cache_dirs[$i]}"/*
print_success "$dir_name cache cleaned. Before: $before_size, After: $(get_dir_size "${cache_dirs[$i]}")"
fi
fi
done
elif [ "$selections" != "skip" ]; then
for sel in $selections; do
if [ -n "${cache_dirs[$sel]}" ] && [ "${cache_dirs[$sel]}" != "$cache_dir" ]; then
dir_name=$(basename "${cache_dirs[$sel]}")
before_size=$(get_dir_size "${cache_dirs[$sel]}")
rm -rf "${cache_dirs[$sel]}"/*
print_success "$dir_name cache cleaned. Before: $before_size, After: $(get_dir_size "${cache_dirs[$sel]}")"
fi
done
fi
fi
}
# Clean System Caches and Logs
clean_system_caches() {
print_header "Cleaning System Caches and Logs"
# macOS system logs
print_info "Checking system logs..."
if confirm "Clean system logs? This requires administrator privileges." "n"; then
print_warning "This will clear system logs. You'll be prompted for your password."
sudo rm -rf /private/var/log/*
print_success "System logs cleaned."
fi
# Temporary files
print_info "Checking temporary files..."
before_size=$(get_dir_size /tmp)
if confirm "Clean temporary files in /tmp?" "y"; then
rm -rf /tmp/* 2>/dev/null
print_success "Temporary files cleaned. Before: $before_size, After: $(get_dir_size /tmp)"
fi
# User cache
print_info "Checking user cache..."
before_size=$(get_dir_size "$HOME/Library/Caches")
if confirm "Clean all user caches? (This is aggressive and may remove important cached data)" "n"; then
find "$HOME/Library/Caches" -depth 1 -not -name "." -not -name ".." -exec rm -rf {} \; 2>/dev/null
print_success "User caches cleaned. Before: $before_size, After: $(get_dir_size "$HOME/Library/Caches")"
fi
# Clear DNS cache
if confirm "Clear DNS cache?" "y"; then
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
print_success "DNS cache flushed."
fi
# Application logs
if check_directory "$HOME/Library/Logs"; then
print_info "Checking application logs..."
before_size=$(get_dir_size "$HOME/Library/Logs")
if confirm "Clean application logs?" "y"; then
find "$HOME/Library/Logs" -type f -delete 2>/dev/null
print_success "Application logs cleaned. Before: $before_size, After: $(get_dir_size "$HOME/Library/Logs")"
fi
fi
# XCode derived data
if check_directory "$HOME/Library/Developer/Xcode/DerivedData"; then
print_info "Checking XCode derived data..."
before_size=$(get_dir_size "$HOME/Library/Developer/Xcode/DerivedData")
if confirm "Clean XCode derived data? This is safe but will require rebuilding projects." "y"; then
rm -rf "$HOME/Library/Developer/Xcode/DerivedData"/*
print_success "XCode derived data cleaned. Before: $before_size, After: $(get_dir_size "$HOME/Library/Developer/Xcode/DerivedData")"
fi
fi
# iOS Device Support files
if check_directory "$HOME/Library/Developer/Xcode/iOS DeviceSupport"; then
print_info "Checking iOS Device Support files..."
before_size=$(get_dir_size "$HOME/Library/Developer/Xcode/iOS DeviceSupport")
if confirm "Clean iOS Device Support files? These will be recreated when you connect iOS devices." "y"; then
rm -rf "$HOME/Library/Developer/Xcode/iOS DeviceSupport"/*
print_success "iOS Device Support files cleaned. Before: $before_size, After: $(get_dir_size "$HOME/Library/Developer/Xcode/iOS DeviceSupport")"
fi
fi
# macOS trash
print_info "Checking trash bin..."
if [ -d "$HOME/.Trash" ]; then
before_size=$(get_dir_size "$HOME/.Trash")
if [ "$before_size" != "0B" ]; then
if confirm "Empty trash bin? This action cannot be undone." "n"; then
rm -rf "$HOME/.Trash"/*
print_success "Trash emptied. Before: $before_size, After: $(get_dir_size "$HOME/.Trash")"
fi
else
print_info "Trash is already empty."
fi
fi
# Software update downloads
if check_directory "/Library/Updates"; then
if confirm "Clean software update downloads? This requires administrator privileges." "n"; then
print_warning "This will clear downloaded software updates. You'll be prompted for your password."
sudo rm -rf /Library/Updates/*
print_success "Software update downloads cleaned."
fi
fi
}
# Show disk usage summary
show_disk_usage() {
print_header "Disk Usage Summary"
# System disk usage
echo -e "${CYAN}System Disk Usage:${NC}"
df -h / | awk 'NR==1 || NR==2 {print}'
echo
# User directory sizes
echo -e "${CYAN}User Directory Sizes:${NC}"
du -h -d 1 ~ 2>/dev/null | sort -hr | head -n 10
echo
# Large directories
echo -e "${CYAN}Large Directories:${NC}"
du -h -d 2 ~ 2>/dev/null | sort -hr | head -n 5
echo
# Development caches
echo -e "${CYAN}Development Tool Caches:${NC}"
print_size "$HOME/Library/Caches/Homebrew"
print_size "$HOME/.npm"
print_size "$HOME/Library/Caches/pip"
print_size "$HOME/Library/Caches/Cypress"
print_size "$HOME/Library/Caches/pnpm"
print_size "$HOME/Library/Caches/ms-playwright"
echo
# Browser caches
echo -e "${CYAN}Browser Caches:${NC}"
print_size "$HOME/Library/Caches/Google/Chrome"
print_size "$HOME/Library/Caches/Firefox"
print_size "$HOME/Library/Caches/com.apple.Safari"
print_size "$HOME/Library/Caches/Microsoft Edge"
print_size "$HOME/Library/Caches/BraveSoftware/Brave-Browser"
echo
}
# Main menu
main_menu() {
local initial_free_space=$(get_free_space)
# Initial disk usage report
clear
print_header "MacOS Cleanup Utility"
echo -e "Current free space: ${GREEN}$initial_free_space${NC}"
echo
while true; do
echo -e "${CYAN}Please select an option:${NC}"
echo "1) Show disk usage summary"
echo "2) Clean development tool caches"
echo "3) Clean browser caches"
echo "4) Clean application caches"
echo "5) Clean system caches and logs"
echo "6) Run all cleanups"
echo "7) Exit"
echo
read -p "Enter your choice (1-7): " choice
echo
case $choice in
1)
show_disk_usage
;;
2)
clean_dev_caches
;;
3)
clean_browser_caches
;;
4)
clean_app_caches
;;
5)
clean_system_caches
;;
6)
print_header "Running All Cleanups"
print_warning "This will run all cleanup options. You'll be prompted for each action."
if confirm "Do you want to continue?" "n"; then
clean_dev_caches
clean_browser_caches
clean_app_caches
clean_system_caches
fi
;;
7)
break
;;
*)
print_error "Invalid choice. Please enter a number between 1 and 7."
;;
esac
echo
echo -e "Press Enter to return to the menu..."
read
clear
print_header "MacOS Cleanup Utility"
echo -e "Current free space: ${GREEN}$(get_free_space)${NC} (was ${BLUE}$initial_free_space${NC})"
echo
done
# Show final summary
local final_free_space=$(get_free_space)
print_header "Cleanup Complete"
echo -e "Initial free space: ${BLUE}$initial_free_space${NC}"
echo -e "Final free space: ${GREEN}$final_free_space${NC}"
# Calculate space saved
local initial_bytes=$(echo "$initial_free_space" | sed 's/G//g')
local final_bytes=$(echo "$final_free_space" | sed 's/G//g')
if (( $(echo "$final_bytes > $initial_bytes" | bc -l) )); then
local saved=$(echo "$final_bytes - $initial_bytes" | bc -l)
echo -e "You freed approximately ${GREEN}${saved}GB${NC} of disk space!"
fi
echo
print_info "Thank you for using the MacOS Cleanup Utility!"
echo
}
# Run main menu
main_menu

6
test.sh Normal file
View File

@ -0,0 +1,6 @@
alias_dir=$(dirname "$BASH_SOURCE")
echo $alias_dir
echo $BASH_SOURCE