温馨提示×

Linux系统下如何设置回收站

小樊
47
2026-01-09 17:22:47
栏目: 智能运维

Linux系统下设置回收站的实用方案

一 方案总览与选择

  • 命令行更安全的方式是使用 trash-cli(遵循 FreeDesktop.org Trash 规范),回收站目录为 $HOME/.local/share/Trash,包含 files/info/ 子目录,便于跨桌面与脚本统一管理与恢复。适合个人与服务器长期使用。
  • 快速兼容旧习惯的做法是 自定义 rm 别名/函数,将删除改为移动到自定义目录(如 ~/.Trash/data/.trash),并提供 列表/恢复/清空 命令。优点是上手快,缺点是需自行维护与规范使用。
  • 若使用桌面环境(如 GNOME/KDE/XFCE),文件管理器自带回收站(如 Nautilus 的回收站),可通过配置启用/禁用;命令行删除与图形界面回收站互不冲突。

二 方案一 使用 trash-cli(推荐)

  • 安装(按需选择发行版命令)
    • Debian/Ubuntu:sudo apt-get install trash-cli
    • RHEL/CentOS:sudo yum install trash-cli
    • Fedora:sudo dnf install trash-cli
  • 常用命令
    • 删除到回收站:trash /path/file
    • 列出回收站:trash-list(或 trash -l
    • 交互式恢复:trash-restore(按序号选择)
    • 清空回收站:trash-empty(可带 –age 7d 仅清理超过 7 天 的项目)
  • 让 rm 更安全(可选)
    • ~/.bashrc/etc/bash.bashrc 添加:alias rm=‘trash’
    • 保留强制删除能力:alias rm!=‘/bin/rm -vi’
    • 使配置生效:source ~/.bashrc
  • 说明
    • 回收站路径为 $HOME/.local/share/Trash(root 为 /root/.local/share/Trash),符合规范,便于多工具协同。

三 方案二 自定义 rm 别名与函数(轻量可控)

  • 创建回收站目录(示例为当前用户)
    • mkdir -p ~/.Trash
  • 将以下片段加入 ~/.bashrc(或 /root/.bashrc),并 source 使其生效
    • 基本版(简洁)
      alias rm='trash_func'
      alias rl='ls ~/.Trash'
      alias ur='undelfile'
      alias ct='cleartrash'
      
      trash_func() { mv -i "$@" ~/.Trash/; }
      undelfile() { mv -i ~/.Trash/"$@" ./; }
      cleartrash() {
        read -p "Clear trash? [y/N] " c; [[ $c =~ ^[Yy]$ ]] && /bin/rm -rf ~/.Trash/*
      }
      
    • 进阶版(防重名,带时间戳)
      TRASH_DIR="$HOME/.Trash"
      mkdir -p "$TRASH_DIR"
      
      alias rm='trash_ts'
      alias rl='ls -l "$TRASH_DIR"'
      alias ur='restore_ts'
      alias ct='cleartrash'
      
      trash_ts() {
        local ts=$(date +%Y%m%d%H%M%S)
        for f; do
          [ -e "$f" ] || continue
          local base=$(basename -- "$f")
          mv -i -- "$f" "$TRASH_DIR/${base}-${ts}"
        done
      }
      restore_ts() {
        local ts=$(date +%Y%m%d%H%M%S)
        for f; do
          local orig=${f%-${ts}}
          [ -e "$TRASH_DIR/$f" ] && mv -i "$TRASH_DIR/$f" ./"$orig"
        done
      }
      cleartrash() {
        read -p "Clear trash? [y/N] " c; [[ $c =~ ^[Yy]$ ]] && /bin/rm -rf "$TRASH_DIR"/*
      }
      
  • 使用方式
    • 删除:rm file 或 rm dir/
    • 列表:rl
    • 恢复:ur file 或 ur dir
    • 清空:ct
  • 提示
    • 该方式仅对当前 shell/用户 生效;如需所有用户生效,将别名写入 /etc/bash.bashrc 或相应全局配置。

四 桌面环境回收站与清理策略

  • 桌面回收站位置与启用
    • 规范路径为 $HOME/.local/share/Trash(图形界面删除会放入此处)。
    • GNOME 中可用 gsettings 开关回收站显示:gsettings set org.gnome.nautilus.preferences show-trash false(true 为开启)。
  • 自动定期清理
    • 使用 trash-cli 定时清理(推荐):
      • 方式A:crontab -e 添加(每天清理 7 天前):0 2 * * * /usr/bin/trash-empty --age 7d
      • 方式B:systemd 定时器(更现代)
        • 创建服务:/etc/systemd/system/trash-cleanup.service
          [Unit]
          Description=Custom Trash Cleanup
          [Service]
          ExecStart=/usr/bin/trash-empty --age 7d
          
        • 创建定时器:/etc/systemd/system/trash-cleanup.timer
          [Unit]
          Description=Run trash-cleanup daily
          [Timer]
          OnCalendar=daily
          Persistent=true
          [Install]
          WantedBy=timers.target
          
        • 启用:sudo systemctl enable --now trash-cleanup.timer
  • 强制清空(仅在确认无恢复需求时使用)
    • /bin/rm -rf $HOME/.local/share/Trash/files/*
    • /bin/rm -rf $HOME/.local/share/Trash/info/*

五 注意事项与最佳实践

  • 任何“回收站”方案都只是降低误删风险,关键数据仍应做好 备份(如 rsync、borg、快照)。
  • alias rm=trash 后,若需执行真正的删除,使用 /bin/rm 或事先定义的 rm!
  • 回收站目录建议仅本人可读写;在多用户或共享环境中,谨慎设置全局别名。
  • 脚本或程序内不建议依赖 rm 别名,必要时使用 /bin/rm -f 明确语义,避免行为不一致。
  • 定期清理回收站,避免占用过多磁盘空间(如 –age 7d 或按容量阈值清理)。

0