写点什么

Linux 的难题,终于有解了!

作者:Jackpop
  • 2022 年 8 月 05 日
  • 本文字数:1708 字

    阅读完需:约 6 分钟

程序员宝藏库:https://github.com/Jackpopc/DevWeekly


删除文件,无论是在 windows 还是 Linux 都是非常频繁的操作,使用 Windows 时有回收站,如果删错了还可以恢复,但是,使用 Linux 则不然,rm -rf应该是一种噩梦版的存在,一旦删错,再也无法恢复了。


如果真的对删文件删除有迫切需求,可以避开 rm 命令,同样有很多方式实现 Windows 下回收站的功能,从而起到内容保护的作用。


  1. 创建一个文件夹 recycle,用于存储那些想要删除,但是不确定后续是否会用到的文件,然后使用 mv 把这些文件移动到这个文件夹内;

  2. 使用 trash 或者 gvfs-trash 这些命令,然后给它命一个别名 alias rm=trash,这样执行 rm 时其实调用的时背后的命令,会把文件移到回收站;


下面,就给大家介绍一个命令行工具,就可以很轻松的解决 rm 绕开"回收站"的问题,给 rm 加一个类似 Windows 回收站的功能。

trash-cli

trash-cli 用于将文件移动到回收站,同时会记录文件的原地址、删除日期和权限。


trash-cli 和 KDE、GNOME、XFCE 使用同一个回收站,你可以在命令行或脚本运行 trash-cli。


下面逐步介绍一下它的用法。

安装

简单方法


要求:


Python 3 (Python 2.7 也可以) pip (在 Debian 上用 apt-get install python-pip 来安装 pip)


命令行下执行命令:


pip install trash-cli
复制代码


源码安装


为所有用户安装:


git clone https://github.com/andreafrancia/trash-cli.gitcd trash-clisudo pip install .
复制代码


为当前用户安装:


git clone https://github.com/andreafrancia/trash-cli.gitcd trash-clipip install .
复制代码


为当前用户安装后你可能需要把以下代码添加到 .bashrc:


export PATH=~/.local/bin:"$PATH"
复制代码


卸载命令:


pip uninstall trash-cli
复制代码


包管理工具安装


Debian/Ubuntu (apt):


sudo apt install trash-cli
复制代码

使用

trash-cli 提供了如下命令:


trash-put           把文件或目录移动到回收站trash-empty         清空回收站trash-list          列出回收站文件trash-restore       恢复回收站文件trash-rm            删除回收站文件
复制代码


移动文件到回收站:


$ trash-put
复制代码


列出回收站文件:


$ trash-list2008-06-01 10:30:48 /home/andrea/bar2008-06-02 21:50:41 /home/andrea/bar2008-06-23 21:50:49 /home/andrea/foo
复制代码


搜索回收站文件:


$ trash-list | grep foo2007-08-30 12:36:00 /home/andrea/foo2007-08-30 12:39:41 /home/andrea/foo
复制代码


恢复回收站文件:


$ trash-restore0 2007-08-30 12:36:00 /home/andrea/foo1 2007-08-30 12:39:41 /home/andrea/bar2 2007-08-30 12:39:41 /home/andrea/bar23 2007-08-30 12:39:41 /home/andrea/foo24 2007-08-30 12:39:41 /home/andrea/fooWhat file to restore [0..4]: 4$ ls foofoo
复制代码


删除所有回收站文件:


$ trash-empty
复制代码


删除回收站中 n 天前被回收的文件:


$ trash-empty <days>
复制代码

设定别名

或许,有的同学觉得每次执行 trash-cli 命令比较麻烦,还是觉得 rm 更加简单、好记忆。


这样的话,可以通过设定别名的方式,给 trash-cli 设定一个 rm 的别名,这样,每次执行 rm,实际执行 trash-cli 的命令:


$ alias rm="trash-put"
复制代码


但是,官方并不建议这样使用,因为,trash-cli 和 rm 的命令语法并不完全相同,可能存在不兼容的地方。此外,shell 的 alias 只在交互界面有效,使用脚本运行时无效。


另外,如果你如果怕习惯性的执行 rm 命令造成误操作,你可以给 rm 设置一个别名来提醒你不要使用它:


alias rm='echo "This is not the command you are looking for."; false'
复制代码


如果你真的要用 rm,那就在 rm 前加上斜杠来取消别名:


\rm file-without-hope
复制代码

文件在哪?

还有一个问题需要回答,执行 trash-cli 命令后,被删除的文件放在哪了?


被删除后的文件存放在下面路径,如果删错了,也可以自行移出:


~/.local/share/Trash/
复制代码


建议大家有空可以多浏览 Github,有很多非常优秀的开源项目。但是,目前 Github 上项目多如牛毛,而且刷榜现在也非常严重,想要找到优质的项目变得越来越难。


这里,给大家推荐 Github 上一个非常不错的项目《DevWeekly》,这个项目每周都会精挑细选一些优质的开源项目,涵盖 C++、JAVA、JavaScript、Python、Go 等不同编程语言。此外,还有一些开源工具、优秀的技术文章,喜欢的同学可以 Star 并收藏一下,每周五会定期更新:

发布于: 刚刚阅读数: 2
用户头像

Jackpop

关注

还未添加个人签名 2020.09.16 加入

公众号:平凡而诗意,微信:code_7steps,全网粉丝超20万,技术进阶、优质资源、实用工具,欢迎关注!

评论

发布
暂无评论
Linux的难题,终于有解了!_Jackpop_InfoQ写作社区