我想配置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 M到MV因为它可能会影响尝试使用永久删除的其他用户R M。此外,如果您走别名路线,您可能必须设置一个 cron 作业来定期清空垃圾。
给出了一堆替代方案这里- 主要是第三方工具/脚本。