เขียนคำสั่ง ที่ทำหน้าที่คล้ายๆกับ 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!"

วิธีใช้:

  1. วางโค้ดที่ให้ไว้ลงไปในไฟล์นั้น
  2. บันทึกไฟล์โดยการกด Ctrl + O และออกโดยการกด Ctrl + X

รันไฟล์ด้วยคำสั่ง:

./cleanup.sh

ทำให้ไฟล์มีสิทธิ์ในการรัน:

chmod +x cleanup.sh

เปิด Terminal และสร้างไฟล์ใหม่:

nano cleanup.sh
หมายเหตุ: สคริปต์นี้จะทำการลบไฟล์อย่างถาวร ดังนั้นควรตรวจสอบว่าคุณไม่ต้องการไฟล์เหล่านั้นจริง ๆ ก่อนรัน

!!= อันตราย =!!

ไฟล์ที่ไม่สามารถลบได้มีสาเหตุมาจากระบบ System Integrity Protection (SIP) ที่ป้องกันไม่ให้แก้ไขหรือเข้าถึงไฟล์สำคัญของระบบ โดยเฉพาะไฟล์ในโฟลเดอร์ที่เกี่ยวข้องกับ iCloud หรือระบบ Apple Services

วิธีแก้ปัญหา:

  1. ข้ามการลบไฟล์ที่ไม่ได้รับอนุญาต:
  2. การปิด SIP: ถ้าคุณต้องการลบไฟล์ที่ถูกป้องกันจริง ๆ คุณจำเป็นต้องปิด SIP ชั่วคราว (แต่ไม่แนะนำให้ทำเป็นปกติ เนื่องจากเป็นการลดความปลอดภัยของระบบ):
    • รีสตาร์ทเครื่อง Mac ของคุณในโหมด Recovery (กด Command + R ขณะเปิดเครื่อง)
    • เปิด Terminal จากเมนู Utilities
    • รีสตาร์ทเครื่องปกติ จากนั้นลองรันคำสั่งลบไฟล์อีกครั้ง

หลังจากลบไฟล์เสร็จแล้ว ควรเปิด SIP กลับโดยทำตามขั้นตอนเดียวกันและใช้คำสั่ง:

csrutil enable

รันคำสั่ง:

csrutil disable

ลองเพิ่มตัวเลือก -f เพื่อบังคับลบเฉพาะไฟล์ที่อนุญาตได้:

sudo rm -rf ~/Library/Caches/* 2>/dev/null

ถ้าไม่ต้องการลบไฟล์ที่เกี่ยวข้องกับระบบอย่างจริงจัง ปล่อยให้ macOS จัดการไฟล์เหล่านั้นเองจะดีกว่า

Read more

ดราม่า "เบิร์ด วันว่างๆ" กับยาแนว: บทเรียนสำคัญของอินฟลูเอนเซอร์และความปลอดภัยบนโซเชียล

ดราม่า "เบิร์ด วันว่างๆ" กับยาแนว: บทเรียนสำคัญของอินฟลูเอนเซอร์และความปลอดภัยบนโซเชียล

เจาะลึกดราม่า "เบิร์ด วันว่างๆ" ใช้ยาแนวเล่นสงกรานต์ คำชี้แจง และผลกระทบต่อสังคม บทเรียนสำคัญสำหรับความรับผิดชอบของอินฟลูเอนเซอร์

By ทีมงาน devdog
Xiaomi 17T หลุดสเปคเด็ดบน Geekbench! ยืนยัน Dimensity 8500 พร้อมแบต 7,000mAh จ่อเปิดตัว

Xiaomi 17T หลุดสเปคเด็ดบน Geekbench! ยืนยัน Dimensity 8500 พร้อมแบต 7,000mAh จ่อเปิดตัว

Xiaomi 17T เตรียมเปิดตัว! พบข้อมูลบน Geekbench ยืนยันใช้ชิป Dimensity 8500 พร้อมแบตเตอรี่จุใจ 7,000mAh คาดบุกตลาดรองเรือธงเร็วๆ นี้

By ทีมงาน devdog
กยศ. เปิดทางรอด! ปรับโครงสร้างหนี้ออนไลน์ หยุดถูกฟ้อง ก่อน 5 ก.ค. 69

กยศ. เปิดทางรอด! ปรับโครงสร้างหนี้ออนไลน์ หยุดถูกฟ้อง ก่อน 5 ก.ค. 69

ผู้กู้ กยศ. กว่า 1 แสนราย เสี่ยงถูกฟ้อง! รีบปรับโครงสร้างหนี้ออนไลน์ผ่านเป๋าตัง/ThaID ก่อน 5 ก.ค. 69 รับสิทธิประโยชน์ ลดดอกเบี้ย หลีกเลี่ยงคดีความ

By ทีมงาน devdog
Baseus MC2: หูฟังคลิปหนีบหูสุดล้ำ แบตอึด 60 ชม. เสียง LDAC กันน้ำ IP67 เพื่ออิสระทางเสียงของคุณ

Baseus MC2: หูฟังคลิปหนีบหูสุดล้ำ แบตอึด 60 ชม. เสียง LDAC กันน้ำ IP67 เพื่ออิสระทางเสียงของคุณ

พบ Baseus MC2 หูฟังคลิปหนีบหูดีไซน์ล้ำ สวมใส่สบายตลอดวัน ด้วยแบตเตอรี่ 60 ชม., กันน้ำ IP67, เสียง LDAC ระดับ Hi-Res และราคาเข้าถึงง่าย

By ทีมงาน devdog