用gio替代rm命令,将要删除的东西先移入回收站

被删除的文件位于:  .local/share/Trash, 恢复的话,需要自己去目录手动拷贝回原位置,如何得到原位置,查看 .local/share/Trash/info 目录下的信息文件。

 

For Ubuntu 18.04 and newer, use gio. For older versions, use gvfs-ls and gvfs-trash.

To read the trash:

gio list trash://
gvfs-ls trash://

To send files or directories to the trash (支持 * 通配符):

gio trash [FILE or FILES or DIR or DIRS]
gvfs-trash [FILE or FILES or DIR or DIRS]

To empty it:

gio trash --empty
gvfs-trash --empty

 

可以将 rm 重新定义,定义如下:

(该代码无法删除 ./  和 ../ 、../../ 、 ../../../ 等目录,也无法删除 ../file、 ../../file  等目录或文件,若要删除这些,请用 gio trash,不过要小心,因为 gio trash 真的可以将目录移动到 trash里,不管你任何时候操作,别大意将 home 目录移动到trash里了,不过也没关系,trash并不会删除文件。)

(它也会将所有参数全部忽略,即会将 -r  -rf   -file  都忽略,因此删除的文件若第一个字符本来就是 -, 则必须用 gio trash 来移入回收站。)

function rm     --description 'vote each account of eosnameswaps'
    if test (count $argv) -lt 1
        return 0
    end

#    for a in $argv[1..-1]
#        if test $a = "."
#            echo "no"
#            return 1
#        end
#    end

    for i in (seq (count $argv))
        if test $argv[$i] = "."
            echo "do not delete ./"
            return 1
        end
        if test $argv[$i] = "./"
            echo "do not delete ./"
            return 1
        end

        switch $argv[$i]
        case "*..*"
            echo "do not delete ../ or ../../ or ../file   etc."
            return 1
        case "-*"
            set argv[$i] ""
        end
    end

#        if test (count $argv) -lt 2 -o "$argv[1]" = "--help"
#            echo ""
#        end

    echo "move it/them to trash."
    gio trash $argv
end

 

另外:

1、对于不同磁盘,gio 会在每一个磁盘上新建一个 trash-* 的暂存目录(系统所在的磁盘在目录: ~/.local/share/Trash )。

2、其实 trash-cli 这个工具软件集更好用,因为它不但可以分别在不同的disk磁盘上使用各自独立的暂存目录,还能将里面暂存的文件列表出来,还能通过命令恢复这些暂存文件。而gio现在并不能很好的列表暂存文件,也不能通过gio命令恢复这些文件。

trash-cli 安装使用示例:

$ sudo apt-get install trash-cli
$ trash
-put file1 file2 dir1 dir3 $ trash-list $ trash-restore     # 它会打印出垃圾箱里的所有文件,让你选择恢复哪一个 $ trash-rm file1 file2 #将垃圾箱里的文件永久删除 $ trash-empty     # 清空垃圾箱 $ trash-empty 10     # 清空10天前移入垃圾箱的所有文件,即保留最近10天删除的

 

新建一个 .config/fish/functions/fj.fish 文件:

function fj     --description 'move files/dirs to trash can'
    trash-put $argv
end

可以使用 fj 代替 trash-put 来将文件移入垃圾桶。

 

posted @ 2019-12-23 17:25  微信公众号--共鸣圈  阅读(1171)  评论(0编辑  收藏  举报