Last active
July 8, 2026 10:36
-
-
Save soykanozcelik/e1970d1d2eb96025e304054a18aa3b44 to your computer and use it in GitHub Desktop.
macOS Cache Cleaner
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # ---------------------------------------------- | |
| # macOS & IDE Temizlik Scripti (Soykan Özel - Parallels Safe) | |
| # ---------------------------------------------- | |
| # Renk tanımları | |
| GREEN="\033[0;32m" | |
| YELLOW="\033[1;33m" | |
| RED="\033[0;31m" | |
| BLUE="\033[1;34m" | |
| NC="\033[0m" # No Color | |
| # 1. GELİŞTİRİCİ / UYGULAMA KLASÖRLERİ (Her modda TAMAMEN silinir) | |
| DEV_TARGETS=( | |
| "$HOME/Library/Developer/Xcode/DerivedData" | |
| "$HOME/Library/Developer/Xcode/Archives" | |
| "$HOME/Library/Developer/Xcode/iOS DeviceSupport" | |
| "$HOME/Library/Developer/Xcode/watchOS DeviceSupport" | |
| "$HOME/Library/Developer/Xcode/tvOS DeviceSupport" | |
| "$HOME/Library/Developer/CoreSimulator/Caches" | |
| "$HOME/Library/Caches/com.apple.dt.Xcode" | |
| "$HOME/Library/Caches/JetBrains" | |
| "$HOME/Library/Logs/JetBrains" | |
| ) | |
| # 2. GENEL SİSTEM CACHE/LOG'LARI (Incremental modda tarihçe kontrolü ile silinir) | |
| SYS_TARGETS=( | |
| "$HOME/Library/Caches" | |
| "$HOME/Library/Logs" | |
| "$HOME/Library/Saved Application State" | |
| "$HOME/Library/Application Support/CrashReporter" | |
| "$HOME/.Trash" | |
| "$HOME/Library/Caches/com.apple.Safari" | |
| "$HOME/Library/Caches/com.apple.WebKit.*" | |
| "$HOME/Library/Containers/com.apple.mail/Data/Library/Caches" | |
| "/tmp" | |
| "/private/tmp" | |
| ) | |
| ALL_TARGETS=("${DEV_TARGETS[@]}" "${SYS_TARGETS[@]}") | |
| # Mod seçimi | |
| echo -e "${BLUE}=== 🧹 Ultimate macOS & IDE Temizlik ===${NC}" | |
| echo -e "${YELLOW}1) Full (Tüm dosyaları sil - Önerilen)${NC}" | |
| echo -e "${YELLOW}2) Incremental (Sistemde belirli günden eskileri sil, IDE'leri tamamen sil)${NC}" | |
| read -p "Mod seçiniz (1/2): " MODE | |
| if [[ "$MODE" == "2" ]]; then | |
| echo -e "${YELLOW}Kaç günlük sistem dosyaları silinsin?${NC}" | |
| echo -e "0 = bugünden önceki" | |
| echo -e "1 = 1 günden eski" | |
| echo -e "7 = haftalık" | |
| read -p "Gün sayısını girin: " DAYS | |
| fi | |
| # Temizlik öncesi boyut raporu | |
| echo -e "\n${BLUE}=== Temizlik Öncesi Boyut Raporu ===${NC}" | |
| TOTAL_BEFORE=0 | |
| for path in "${ALL_TARGETS[@]}"; do | |
| if [ -d "$path" ] || ls $path &>/dev/null; then | |
| SIZE=$(du -sh $path 2>/dev/null | awk '{print $1}') | |
| BYTES=$(du -sk $path 2>/dev/null | awk '{sum+=$1} END {print sum}') | |
| TOTAL_BEFORE=$((TOTAL_BEFORE + BYTES)) | |
| echo -e "→ ${YELLOW}$path${NC} : ${GREEN}$SIZE${NC}" | |
| fi | |
| done | |
| TOTAL_MB=$((TOTAL_BEFORE / 1024)) | |
| echo -e "${BLUE}--------------------------------------${NC}" | |
| echo -e "Toplam kaplayan alan: ${GREEN}${TOTAL_MB} MB${NC}" | |
| echo -e "${BLUE}--------------------------------------${NC}" | |
| read -p "Temizlik başlasın mı? (y/n): " CONFIRM | |
| if [[ "$CONFIRM" != "y" && "$CONFIRM" != "Y" ]]; then | |
| echo -e "${RED}❌ İşlem iptal edildi.${NC}" | |
| exit 0 | |
| fi | |
| # Temizlik işlemi | |
| echo -e "\n${YELLOW}🚀 Temizlik başlatılıyor...${NC}" | |
| # Geliştirici klasörlerini her modda tamamen sil | |
| for path in "${DEV_TARGETS[@]}"; do | |
| if [ -d "$path" ]; then | |
| echo -e "→ ${RED}[FULL WIPE]${NC} Temizleniyor: $path" | |
| rm -rf "$path"/* 2>/dev/null | |
| fi | |
| done | |
| # Sistem klasörlerini moda göre sil (PARALLELS GÜVENLİK FİLTRESİ AKTİF) | |
| for path in "${SYS_TARGETS[@]}"; do | |
| if [ -d "$path" ] || ls $path &>/dev/null; then | |
| if [[ "$MODE" == "1" ]]; then | |
| echo -e "→ ${RED}[FULL WIPE]${NC} Temizleniyor: $path" | |
| # Parallels/PVM içeren hiçbir klasörü silme! | |
| find "$path" -mindepth 1 -maxdepth 1 ! -iname "*parallels*" ! -iname "*pvm*" -exec rm -rf {} + 2>/dev/null | |
| else | |
| echo -e "→ ${YELLOW}[INCREMENTAL +${DAYS}d]${NC} Temizleniyor: $path" | |
| # Parallels/PVM içeren hiçbir dosyayı silme! | |
| find "$path" -type f -mtime +$DAYS ! -iname "*parallels*" ! -iname "*pvm*" -delete 2>/dev/null | |
| find "$path" -type d -empty ! -iname "*parallels*" ! -iname "*pvm*" -delete 2>/dev/null | |
| fi | |
| fi | |
| done | |
| # QuickLook ve Font cache temizliği | |
| echo -e "→ ${YELLOW}QuickLook & Font cache temizleniyor...${NC}" | |
| qlmanage -r cache &>/dev/null | |
| atsutil databases -remove &>/dev/null | |
| atsutil server -shutdown &>/dev/null | |
| atsutil server -ping &>/dev/null | |
| # Temizlik sonrası boyut raporu | |
| TOTAL_AFTER=0 | |
| for path in "${ALL_TARGETS[@]}"; do | |
| if [ -d "$path" ] || ls $path &>/dev/null; then | |
| BYTES=$(du -sk $path 2>/dev/null | awk '{sum+=$1} END {print sum}') | |
| TOTAL_AFTER=$((TOTAL_AFTER + BYTES)) | |
| fi | |
| done | |
| FREED=$(( (TOTAL_BEFORE - TOTAL_AFTER) / 1024 )) | |
| echo -e "\n${GREEN}✅ Temizlik tamamlandı.${NC} Açılan alan: ${GREEN}${FREED} MB${NC}" | |
| # Çöp kutusunu arka planda boşalt | |
| osascript -e 'tell application "Finder" to empty the trash' &>/dev/null | |
| read -p "Kapatmak için Enter tuşuna basın..." | |
| osascript -e 'display notification "Temizlik tamamlandı. Açılan alan: '"${FREED}"' MB" with title "🧹 Sistem ve IDE Temizlendi"' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment