เขียนคำสั่ง ที่ทำหน้าที่คล้ายๆกับ CleanMyMac
คุณสามารถเขียนคำสั่งหรือสคริปต์ใน bash เพื่อทำการลบไฟล์ชั่วคราว, cache และ log files ที่ไม่จำเป็นในระบบ macOS ได้คล้ายกับการทำงานของ CleanMyMac ตัวอย่างเช่น:
#!/bin/bash
# ลบ System Cache
echo "Clearing system cache..."
sudo rm -rf ~/Library/Caches/* 2>/dev/null
sudo rm -rf /Library/Caches/* 2>/dev/null
# ลบ Application Logs
echo "Clearing application logs..."
sudo rm -rf ~/Library/Logs/* 2>/dev/null
sudo rm -rf /Library/Logs/* 2>/dev/null
# ลบ User Cache
echo "Clearing user cache..."
sudo rm -rf /Users/$(whoami)/Library/Caches/* 2>/dev/null
# ลบ Trash
echo "Emptying trash..."
sudo rm -rf ~/.Trash/* 2>/dev/null
# ลบ Downloaded Software Updates
echo "Removing downloaded software updates..."
sudo rm -rf /Library/Updates/* 2>/dev/null
# ลบ Xcode DerivedData ถ้ามีการใช้งาน Xcode
if [ -d ~/Library/Developer/Xcode/DerivedData ]; then
echo "Clearing Xcode DerivedData..."
sudo rm -rf ~/Library/Developer/Xcode/DerivedData/* 2>/dev/null
fi
# ลบ Homebrew cache ถ้ามีการใช้งาน Homebrew
if [ -d /usr/local/Homebrew ]; then
echo "Clearing Homebrew cache..."
brew cleanup -s
fi
# ลบ Local Snapshots ของ Time Machine
echo "Clearing Time Machine local snapshots..."
tmutil deletelocalsnapshots / 2>/dev/null
# ลบ cache
sudo rm -rf /Users/$(whoami)/.fastlane 2>/dev/null
sudo rm -rf /Users/$(whoami)/.config 2>/dev/null
sudo rm -rf /Users/$(whoami)/.yarn 2>/dev/null
sudo rm -rf /Users/$(whoami)/.expo 2>/dev/null
sudo rm -rf /Users/$(whoami)/.docker 2>/dev/null
sudo rm -rf /Users/$(whoami)/.node-gyp 2>/dev/null
sudo rm -rf /Users/$(whoami)/.flet 2>/dev/null
sudo rm -rf /Users/$(whoami)/.app-store 2>/dev/null
sudo rm -rf /Users/$(whoami)/.vim 2>/dev/null
sudo rm -rf /Users/$(whoami)/go 2>/dev/null
sudo rm -rf /Users/$(whoami)/.plastic4 2>/dev/null
sudo rm -rf /Users/$(whoami)/.thumbnails 2>/dev/null
sudo rm -rf /Users/$(whoami)/.proxyman-data 2>/dev/null
sudo rm -rf /Users/$(whoami)/.omnisharp 2>/dev/null
sudo rm -rf /Users/$(whoami)/.k8slens 2>/dev/null
sudo rm -rf /Users/$(whoami)/.local 2>/dev/null
sudo rm -rf /Users/$(whoami)/Creative Cloud Files 2>/dev/null
sudo rm -rf /Users/$(whoami)/.mongodb 2>/dev/null
sudo rm -rf /Users/$(whoami)/.nvm 2>/dev/null
sudo rm -rf /Users/$(whoami)/.npm 2>/dev/null
sudo rm -rf /Users/$(whoami)/.cookiecutters 2>/dev/null
sudo rm -rf /Users/$(whoami)/.ipython 2>/dev/null
sudo rm -rf /Users/$(whoami)/.matplotlib 2>/dev/null
sudo rm -rf /Users/$(whoami)/.lunarclient 2>/dev/null
sudo rm -rf /Users/$(whoami)/.oracle_jre_usage 2>/dev/null
sudo rm -rf /Users/$(whoami)/.zenmap 2>/dev/null
sudo rm -rf /Users/$(whoami)/.cargo 2>/dev/null
sudo rm -rf /Users/$(whoami)/.android 2>/dev/null
sudo rm -rf /Users/$(whoami)/.pgadmin 2>/dev/null
sudo rm -rf /Users/$(whoami)/.cocoapods 2>/dev/null
sudo rm -rf /Users/$(whoami)/.proxyman 2>/dev/null
sudo rm -rf /Users/$(whoami)/.cups 2>/dev/null
sudo rm -rf /Users/$(whoami)/.bash_sessions 2>/dev/null
sudo rm -rf /Users/$(whoami)/.wdm 2>/dev/null
sudo rm -rf /Users/$(whoami)/.DDPreview 2>/dev/null
sudo rm -rf /Users/$(whoami)/.serverless 2>/dev/null
sudo rm -rf /Users/$(whoami)/.idlerc 2>/dev/null
sudo rm -rf /Users/$(whoami)/.kube 2>/dev/null
sudo rm -rf /Users/$(whoami)/.amplify 2>/dev/null
sudo rm -rf /Users/$(whoami)/.sonarlint 2>/dev/null
sudo rm -rf /Users/$(whoami)/.rustup 2>/dev/null
sudo rm -rf /Users/$(whoami)/.ssh 2>/dev/null
sudo rm -rf /Users/$(whoami)/.cookiecutter_replay 2>/dev/null
sudo rm -rf /Users/$(whoami)/.jupyter 2>/dev/null
sudo rm -rf /Users/$(whoami)/.keras 2>/dev/null
sudo rm -rf /Users/$(whoami)/.pnpm-state 2>/dev/null
sudo rm -rf /Users/$(whoami)/.anydesk 2>/dev/null
sudo rm -rf /Users/$(whoami)/.pyenv 2>/dev/null
sudo rm -rf /Users/$(whoami)/.swt 2>/dev/null
sudo rm -rf /Users/$(whoami)/.gem 2>/dev/null
sudo rm -rf /Users/$(whoami)/.swiftpm 2>/dev/null
sudo rm -rf /Users/$(whoami)/.gk 2>/dev/null
sudo rm -rf /Users/$(whoami)/.aws-sam 2>/dev/null
sudo rm -rf /Users/$(whoami)/.DDLocalBackups 2>/dev/null
sudo rm -rf /Users/$(whoami)/.redhat 2>/dev/null
sudo rm -rf /Users/$(whoami)/.cache 2>/dev/null
sudo rm -rf /Users/$(whoami)/.deepface 2>/dev/null
sudo rm -rf /Users/$(whoami)/.aws 2>/dev/null
sudo rm -rf /Users/$(whoami)/.camera.ui 2>/dev/null
sudo rm -rf /Users/$(whoami)/.putty 2>/dev/null
sudo rm -rf /Users/$(whoami)/.zsh_sessions 2>/dev/null
sudo rm -rf /Users/$(whoami)/.composer 2>/dev/null
# Restart Finder เพื่อให้การเปลี่ยนแปลงแสดงผล
echo "Restarting Finder..."
killall Finder
echo "Cleanup completed!"
วิธีใช้:
- วางโค้ดที่ให้ไว้ลงไปในไฟล์นั้น
- บันทึกไฟล์โดยการกด
Ctrl + OและออกโดยการกดCtrl + X
รันไฟล์ด้วยคำสั่ง:
./cleanup.sh
ทำให้ไฟล์มีสิทธิ์ในการรัน:
chmod +x cleanup.sh
เปิด Terminal และสร้างไฟล์ใหม่:
nano cleanup.sh
หมายเหตุ: สคริปต์นี้จะทำการลบไฟล์อย่างถาวร ดังนั้นควรตรวจสอบว่าคุณไม่ต้องการไฟล์เหล่านั้นจริง ๆ ก่อนรัน
!!= อันตราย =!!
ไฟล์ที่ไม่สามารถลบได้มีสาเหตุมาจากระบบ System Integrity Protection (SIP) ที่ป้องกันไม่ให้แก้ไขหรือเข้าถึงไฟล์สำคัญของระบบ โดยเฉพาะไฟล์ในโฟลเดอร์ที่เกี่ยวข้องกับ iCloud หรือระบบ Apple Services
วิธีแก้ปัญหา:
- ข้ามการลบไฟล์ที่ไม่ได้รับอนุญาต:
- การปิด SIP: ถ้าคุณต้องการลบไฟล์ที่ถูกป้องกันจริง ๆ คุณจำเป็นต้องปิด SIP ชั่วคราว (แต่ไม่แนะนำให้ทำเป็นปกติ เนื่องจากเป็นการลดความปลอดภัยของระบบ):
- รีสตาร์ทเครื่อง Mac ของคุณในโหมด Recovery (กด
Command + Rขณะเปิดเครื่อง) - เปิด Terminal จากเมนู
Utilities - รีสตาร์ทเครื่องปกติ จากนั้นลองรันคำสั่งลบไฟล์อีกครั้ง
- รีสตาร์ทเครื่อง Mac ของคุณในโหมด Recovery (กด
หลังจากลบไฟล์เสร็จแล้ว ควรเปิด SIP กลับโดยทำตามขั้นตอนเดียวกันและใช้คำสั่ง:
csrutil enable
รันคำสั่ง:
csrutil disable
ลองเพิ่มตัวเลือก -f เพื่อบังคับลบเฉพาะไฟล์ที่อนุญาตได้:
sudo rm -rf ~/Library/Caches/* 2>/dev/null
ถ้าไม่ต้องการลบไฟล์ที่เกี่ยวข้องกับระบบอย่างจริงจัง ปล่อยให้ macOS จัดการไฟล์เหล่านั้นเองจะดีกว่า