[ 已解决 ] 请教在终端里把文件删除到回收站的命令?

rm 一删就找不回来了,请问有没有类似的命令,起鼠标右键删除到回收站的作用?

可以试试这样,先创建一个文件夹.trash 在~/ 里,然后~/.bashrc 中添加

alias rm=trash
trash()
{
        mv $@ ~/.trash
}

意思是将 rm 命令用 mv 命令来代替,使用 rm 后文件会移动到~/.trash 文件夹里。

1赞

谢谢,我试试

把这个保存成 trash.sh

#!/bin/sh
# mv the file
mv $1 /home/$LOGNAME/.local/share/Trash/files/
# prepare the info file for KDE
SHORT_NAME=$(echo "$1" | sed "s/.*///")
PATH_LEVEL=`dirname $1`
pushd $PATH_LEVEL/ &>/dev/null
echo "[Trash Info]" > /home/$LOGNAME/.local/share/Trash/info/$SHORT_NAME.trashinfo
echo "Path=`pwd`/$SHORT_NAME" >> /home/$LOGNAME/.local/share/Trash/info/$SHORT_NAME.trashinfo
echo "DeletionDate=`date +20%y-%m-%dT%H:%M:%S`" >> /home/$LOGNAME/.local/share/Trash/info/$SHORT_NAME.trashinfo
popd &>/dev/null

然后把 trash.sh 移动到 /usr/bin/trash

sudo mv trash.sh /usr/bin/trash

以后就可以:

trash book.opensuse.startup_zh_CN.alpha2.pdf

移动到回收站了。而且可以在 KDE 的回收站里面正常看到那个文件。

注:

  1. 不适合 root 当桌面的用户。

  2. 这个命令即使你用 su 之后执行,也是移动文件到你普通用户的回收站(因为回收给 root 你看不到,过两天就忘记了),造成的结果就是你在 KDE 清空回收站时清不掉的文件就是原来归 root 所有的文件。需要你手动清理

    sudo rm .local/share/Trash/files/%{name}
    sudo rm .local/share/Trash/info/%{name}.trashinfo

1赞

我在想那样改了 rm 命令不是没用了,以后要彻底删除怎么办?另外,回收站的位置貌似是~/.local/share/Trash/files 没有找到~/.trash 这个文件。

如果我没理解错你的命令的话。。。

这个如果文件夹中名字中含有. 可能出问题吧~

先学好正则行嘛?你没看见我测试文件名字叫:book.openSUSE.startup_zh_CN.alpha2.pdf

在 2l 那个方案里有说要先创建.trash 文件夹,没有将文件移至实际的回收站里(比较复杂,4l 有参考方案):slight_smile:
以后要删除文件可以进入该文件夹,然后使用

sudo rm *

就是使用删除 rm 的命令了。

谢谢 laper 和 marguerite 。按照 4L 来了,很方便嘿嘿!回收站里也看得见。

用这 trash-cli 吧!

trash-put           trashes files and directories.
trash-empty         empty the trashcan(s).
trash-list          list trashed file.
restore-trash       restore a trashed file.
trash-rm            remove individual files from trash can.
1赞