温馨提示×

Linux回收站能设置吗

小樊
66
2025-07-10 09:50:54
栏目: 智能运维

在Linux系统中,回收站功能并不是默认启用的,但可以通过一些方法来模拟和管理回收站,以防止误删文件。以下是几种常见的方法:

使用命令行工具

  • 安装trash-cli:根据不同的Linux发行版,使用相应的包管理器安装trash-cli。
    • Debian/Ubuntu: sudo apt-get install trash-cli
    • Fedora: sudo dnf install trash-cli
    • Arch Linux: sudo pacman -S trash-cli
  • 使用命令
    • 将文件移至“回收站”:trash /path/to/file
    • 清空“回收站”:trash-empty
    • 恢复文件:trash-restore file_name

利用桌面环境自带功能

大多数Linux桌面环境(如GNOME、KDE等)已经内置了回收站功能:

  • GNOME:删除的文件在~/.local/share/Trash/files目录下。清空回收站:rm -rf ~/.local/share/Trash/files/*
  • KDE Plasma:删除的文件在~/.local/share/Trash目录下。清空回收站:rm -rf ~/.local/share/Trash/*

手动创建回收站目录和脚本

  1. 创建回收站目录:mkdir ~/.local/share/Trash
  2. 编写回收站脚本:创建一个名为 trash.sh 的脚本,用于替代系统的 rm 命令。这个脚本将文件移动到 .trash 目录,并为文件添加时间戳以防止重名。
  3. 赋予脚本执行权限:chmod x /trash.sh
  4. 重命名 rm 命令:编辑 ~/.bashrc~/.zshrc 文件,将 rm 命令别名设置为 trash.sh
  5. 重新加载配置:source ~/.bashrc

定时清理回收站

可以设置cron任务定期清理回收站中的过期文件。例如,删除超过30天的文件:

#!/bin/bash
TRASH_DIR=~/.local/share/Trash
now=$(date %s)
for file in $TRASH_DIR/*; do
  dir_name=$(basename "$file")
  dir_time=$(stat -c %Y "$file")
  if ((now - dir_time > 86400)); then
    rm -rf "$file"
  fi
done

将该脚本保存为 clean_trash.sh,并赋予其可执行权限:chmod x /clean_trash.sh。为了让清理任务自动化执行,可以将此脚本添加到 crontab 中,例如每天运行一次:

(crontab -l ; echo "0 0 * * * /clean_trash.sh") | crontab -

0