配置rm命令

配置rm命令

我想配置rm命令。当用户键入rm删除文件时,不是立即删除它,而是必须将该文件传输到主文件夹的 .trash 中。有人能帮我吗 ?

答案1

您可以将 LD_PRELOAD 与 libtrash 一起使用。

看:http://www.techrepublic.com/article/safely-delete-linux-files-with-libtrash/5034918

您还可以在 ~/.trash 文件夹中创建指向文件的硬链接。当普通文件(之前是硬链接的)被删除时,它们将保留在磁盘上,直到您从“垃圾箱”中删除它们。

要创建硬链接:

ln test.txt ~/.trash/test.txt

答案2

一个快速的解决方案是将以下函数声明添加到您的~.bashrc.

function rm() {
   mv "${@}" ~/.trash
}

注意事项:

  • rm和之间的选项差异mv已被注释涵盖。
  • 您可能会习惯垃圾桶的行为。在没有进行此修改的不同计算机/帐户上,快速删除后您将遇到很大麻烦;-)

只是我的 5 美分 - 请改用:

alias rm='rm -i '

答案3

请记住,实际重命名或移动“rm”命令并不是一个好主意。更好的做法是alias命令rm在用户的配置文件下使用完全不同的脚本。

在你的 .bash_profile 中(假设你使用 bash 作为默认 shell)

alias rm='~/bin/deleteFile'

然后你就可以创建脚本了~/bin/deleteFile。只需复制/修改以下内容以满足您的需求:

#!/bin/bash
TODEL=$1
if [ "${TODEL:0:1}" == "/" ]; then  #full path?
  TRASH=~/trash-can/`dirname $1`
else                                #relative path.
  TRASH=~/trash-can/`pwd`/`dirname $1`  
fi
mkdir -p $TRASH 2> /dev/null
mv $TODEL $TRASH

这未经测试,但应该可以满足您的需求。有一些警告需要解决......但由您决定如何处理。即,当您删除一个文件,创建一个同名的新文件,然后将其删除时,会发生什么?并且这个脚本不会清理你的垃圾桶。也许是每周一次的计划任务或类似的任务?

这不会覆盖/bin/rm直接调用的脚本,也不会与未在 bash 配置文件中加载的脚本一起使用。在某种程度上信任此脚本之前,可能还应该考虑数百件其他事情。

答案4

在 Debian 上,类似 'alias rm='mv -t ~/home/.trash/ ' in ~./bash_aliases 的东西应该可以工作。然而,使用别名并不是一个好习惯R MMV因为它可能会影响尝试使用永久删除的其他用户R M。此外,如果您走别名路线,您可能必须设置一个 cron 作业来定期清空垃圾。

给出了一堆替代方案这里- 主要是第三方工具/脚本。

相关内容