我来介绍几种常见的Shell脚本清理用户缓存的方法:

综合清理脚本
#!/bin/bash
# 清理用户缓存脚本
echo "开始清理用户缓存..."
# 清理浏览器缓存(以Chrome为例)
if [ -d "$HOME/.cache/google-chrome" ]; then
echo "清理Chrome缓存..."
rm -rf "$HOME/.cache/google-chrome/"*
echo "Chrome缓存已清理"
fi
# 清理Firefox缓存
if [ -d "$HOME/.cache/mozilla/firefox" ]; then
echo "清理Firefox缓存..."
rm -rf "$HOME/.cache/mozilla/firefox/"*
echo "Firefox缓存已清理"
fi
# 清理系统应用缓存
echo "清理系统应用缓存..."
rm -rf "$HOME/.cache/"*
# 清理缩略图缓存
echo "清理缩略图缓存..."
rm -rf "$HOME/.thumbnails/"*
rm -rf "$HOME/.cache/thumbnails/"*
# 清理软件包管理器缓存
echo "清理APT缓存..."
sudo apt-get clean
sudo apt-get autoclean
# 清理日志文件
echo "清理旧日志文件..."
find "$HOME" -name "*.log" -type f -mtime +7 -delete
echo "缓存清理完成!"
交互式清理脚本
#!/bin/bash
# 颜色定义
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color
# 显示菜单
show_menu() {
clear
echo -e "${GREEN}缓存清理工具${NC}"
echo "========================"
echo "1. 清理浏览器缓存"
echo "2. 清理系统缓存"
echo "3. 清理缩略图缓存"
echo "4. 清理日志文件"
echo "5. 清理所有缓存"
echo "6. 退出"
echo "========================"
}
# 清理浏览器缓存
clean_browser_cache() {
echo -e "${YELLOW}正在清理浏览器缓存...${NC}"
# Chrome
if [ -d "$HOME/.cache/google-chrome" ]; then
rm -rf "$HOME/.cache/google-chrome/"* 2>/dev/null
echo "Chrome缓存已清理"
fi
# Firefox
if [ -d "$HOME/.cache/mozilla/firefox" ]; then
rm -rf "$HOME/.cache/mozilla/firefox/"* 2>/dev/null
echo "Firefox缓存已清理"
fi
# Chromium
if [ -d "$HOME/.cache/chromium" ]; then
rm -rf "$HOME/.cache/chromium/"* 2>/dev/null
echo "Chromium缓存已清理"
fi
echo -e "${GREEN}浏览器缓存清理完成${NC}"
}
# 清理系统缓存
clean_system_cache() {
echo -e "${YELLOW}正在清理系统缓存...${NC}"
# 清理 ~/.cache 目录
if [ -d "$HOME/.cache" ]; then
rm -rf "$HOME/.cache/"* 2>/dev/null
echo "系统缓存已清理"
fi
# 清理pip缓存
if [ -d "$HOME/.cache/pip" ]; then
rm -rf "$HOME/.cache/pip/"* 2>/dev/null
echo "pip缓存已清理"
fi
echo -e "${GREEN}系统缓存清理完成${NC}"
}
# 清理缩略图缓存
clean_thumbnails() {
echo -e "${YELLOW}正在清理缩略图缓存...${NC}"
rm -rf "$HOME/.thumbnails/"* 2>/dev/null
rm -rf "$HOME/.cache/thumbnails/"* 2>/dev/null
rm -rf "$HOME/.local/share/thumbnails/"* 2>/dev/null
echo -e "${GREEN}缩略图缓存清理完成${NC}"
}
# 清理日志文件
clean_logs() {
echo -e "${YELLOW}正在清理旧日志文件...${NC}"
# 清理7天前的日志
find "$HOME" -name "*.log" -type f -mtime +7 -delete 2>/dev/null
echo -e "${GREEN}旧日志文件清理完成${NC}"
}
# 清理所有缓存
clean_all() {
echo -e "${YELLOW}正在清理所有缓存...${NC}"
clean_browser_cache
clean_system_cache
clean_thumbnails
clean_logs
# 清理软件包缓存(需要sudo权限)
if command -v apt-get &>/dev/null; then
sudo apt-get clean 2>/dev/null
sudo apt-get autoclean 2>/dev/null
fi
echo -e "${GREEN}所有缓存清理完成${NC}"
}
# 显示磁盘使用情况
show_disk_usage() {
echo -e "${YELLOW}缓存目录大小:${NC}"
du -sh "$HOME/.cache" 2>/dev/null || echo "0B"
du -sh "$HOME/.thumbnails" 2>/dev/null || echo "0B"
}
# 主循环
while true; do
show_menu
show_disk_usage
echo ""
read -p "请选择操作 [1-6]: " choice
case $choice in
1)
clean_browser_cache
;;
2)
clean_system_cache
;;
3)
clean_thumbnails
;;
4)
clean_logs
;;
5)
clean_all
;;
6)
echo -e "${GREEN}退出程序${NC}"
exit 0
;;
*)
echo -e "${RED}无效选择,请重新输入${NC}"
;;
esac
echo ""
read -p "按回车键继续..."
done
特定应用缓存清理
#!/bin/bash
# 清理特定应用的缓存
# 清理Docker缓存
clean_docker() {
if command -v docker &>/dev/null; then
echo "清理Docker缓存..."
docker system prune -af --volumes 2>/dev/null
fi
}
# 清理npm缓存
clean_npm() {
if command -v npm &>/dev/null; then
echo "清理npm缓存..."
npm cache clean --force 2>/dev/null
fi
}
# 清理pip缓存
clean_pip() {
if command -v pip3 &>/dev/null; then
echo "清理pip缓存..."
pip3 cache purge 2>/dev/null
fi
}
# 清理snap缓存
clean_snap() {
if command -v snap &>/dev/null; then
echo "清理snap缓存..."
sudo snap clean --all 2>/dev/null
fi
}
# 清理flatpak缓存
clean_flatpak() {
if command -v flatpak &>/dev/null; then
echo "清理flatpak缓存..."
flatpak uninstall --unused 2>/dev/null
fi
}
# 清理conda缓存
clean_conda() {
if command -v conda &>/dev/null; then
echo "清理conda缓存..."
conda clean --all -y 2>/dev/null
fi
}
定时清理脚本
#!/bin/bash
# 定时清理脚本 - 建议配合cron使用
LOG_FILE="$HOME/.cache_cleaner.log"
CURRENT_DATE=$(date "+%Y-%m-%d %H:%M:%S")
echo "[$CURRENT_DATE] 开始清理缓存" >> "$LOG_FILE"
# 清理各类缓存并记录日志
cleanup_with_log() {
local dir="$1"
local name="$2"
if [ -d "$dir" ]; then
local size_before=$(du -sh "$dir" 2>/dev/null | cut -f1)
rm -rf "$dir"/*
echo "已清理 $name ($size_before)" >> "$LOG_FILE"
fi
}
# 执行清理
cleanup_with_log "$HOME/.cache" "系统缓存"
cleanup_with_log "$HOME/.thumbnails" "缩略图缓存"
cleanup_with_log "$HOME/.local/share/Trash" "回收站"
# 清理7天前的日志文件
find "$HOME" -name "*.log" -type f -mtime +7 -delete 2>/dev/null
echo "清理完成" >> "$LOG_FILE"
echo "------------------------" >> "$LOG_FILE"
# 显示清理历史
cat "$LOG_FILE"
使用方法
-
保存脚本:
# 保存为 clean_cache.sh nano clean_cache.sh
-
添加执行权限:
chmod +x clean_cache.sh
-
运行脚本:
# 直接运行 ./clean_cache.sh
或使用bash运行
bash clean_cache.sh
4. **设置定时任务**(可选):
```bash
# 编辑crontab
crontab -e
# 添加每周日清理的任务
0 2 * * 0 /path/to/clean_cache.sh
注意事项
- 备份重要数据:在运行清理脚本前,确保重要数据已备份
- 权限问题:某些目录可能需要sudo权限
- 选择性清理:可以根据实际需求选择清理的内容
- 谨慎使用:
rm -rf命令要小心使用,避免误删重要文件