用过终端(Terminal)的人都知道, rm 删除的文件,不会像 Mac Finder 里删除文件、文件夹 一样,会先进入到废纸篓(Trash),一旦 rm 删除,就很难撤销、恢复。
但是作为程序员,做终端里 rm 删除文件是稀松平常的事,那么如何保障在终端中可以放心 大胆的删除文件、文件夹,而不用担心误删后不可恢复呢?
最直接的想法就是 rm 删除的文件也像 Finder 一样先进废纸篓。
我网上搜寻一番,发现了以下几个工具:
在 Mac 下使用命令行或脚本删除文件到废纸篓 这篇文章中介绍,Mac Finder 中删除的文件其实是进入到 ~/.Trash 文件夹。 但是如果简单的讲文件 mv 到 ~/.Trash 文件夹,是无法做废纸篓里右键恢复到原处的, 因为这个移动操作没有记录完整的操作行为。
通过 AppleScript 可以通知 Finder 删除文件:
优点:
缺点:
在网上找到好几个不同版本但命名相同的 rmtrash 程序,有的是 shell 脚本,有的是 Xcode 程序。
缺点:
这个版本的 rmtrash 是用 Objective-C 编写的应用程序,但是版本有点老,下载安装好 rmtrash 发现并不能在 macOS Mojave (10.14) 中正常运行。
缺点:不支持 macOS Mojave。
https://github.com/LaiJingli/rmtrash
从源码上看,被删除的文件是进入了自定义的 ~/.rmtrash/ 文件夹(这不是期望的), 另外还有一堆其他的功能,例如 list, mv, restore, empty。
缺点:代码写的太烂,我是不会用的。
https://github.com/nateshmbhat/rm-trash
不过 ~/tmp 实际已被删除到未知域。
优点:
缺点:
https://github.com/PhrozenByte/rmtrash
基于上面的这么多的对比,我实现了一个便于安装、使用的脚本,欢迎使用。
https://github.com/hotoo/rm-trash
Category: Technology
Tags: rm, Trash, Mac, Terminal
Published on 2019-03-04