给 “rm” 命令添加个“垃圾桶”

390次阅读  |  发布于2年以前

英文:2daygeek,

做过linux同学的人都知道,在linux系统中使用 rm -rf *时会将文件永久删除,这也是我们在操作时禁止使用这个命令的原因。本文将介绍一个方法可以让rm命令删除的文件暂时不被彻底删除,而是像windows那样先丢进垃圾箱。 有人在看关于 Trash-Cli 的文章时从评论部分那里获得了一个关于 saferm.sh 脚本的更新,这个脚本就可以实现我们的目的。 这个脚本会根据用户的定时设置自动的对 GNOME 、KDE、Unity 或 LXDE 桌面环境(DE)进行识别,然后将文件或文件夹安全地移动到默认垃圾箱 $HOME/.local/share/Trash/files,如果没有此目录则会在您的主目录中创建垃圾箱文件夹 $HOME/Trash。 saferm.sh 脚本目前托管在 Github 中,可以按照下面的命令获取改脚本。

$ git clone https://github.com/lagerspetz/linux-stuff

$ sudo mv linux-stuff/scripts/saferm.sh /bin

$ rm -Rf linux-stuff

在 .bashrc 文件中设置别名,

alias rm=saferm.sh

执行下面的命令使其生效,

$ source ~/.bashrc

一切就绪,现在你可以执行 rm 命令,自动将文件移动到”垃圾桶”,而不是永久删除它们。 测试一下,我们将删除一个名为 magi.txt 的文件,命令行明确的提醒了 Moving magi.txt to $HOME/.local/share/Trash/file。

$ rm -rf magi.txt

Moving magi.txt to /home/magi/.local/share/Trash/files

也可以通过 ls 命令或 trash-cli 进行验证。

$ ls -lh /home/magi/.local/share/Trash/files

Permissions Size User Date Modified Name

.rw-r--r-- 32 magi 11 Oct 16:24 magi.txt

或者我们可以通过文件管理器界面中查看相同的内容。

(LCTT 译注:原文此处混淆了部分 trash-cli 的内容,考虑到文章衔接和逻辑,此处略。)

要了解 saferm.sh 的其他选项,请查看帮助。

$ saferm.sh -h

This is saferm.sh 1.16. LXDE and Gnome3 detection.

Will ask to unsafe-delete instead of cross-fs move. Allows unsafe (regular rm) delete (ignores trashinfo).

Creates trash and trashinfo directories if they do not exist. Handles symbolic link deletion.

Does not complain about different user any more.

Usage: /path/to/saferm.sh [OPTIONS] [--] files and dirs to safely remove

OPTIONS:

-r allows recursively removing directories.

-f Allow deleting special files (devices, ...).

-u Unsafe mode, bypass trash and delete files permanently.

-v Verbose, prints more messages. Default in this version.

-q Quiet mode. Opposite of verbose.

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8