Mac下使用命令行或脚本删除文件到废纸篓

mac删除文件有两种方式:
1. 使用Finder的“移到废纸篓”功能
2. 使用rm命令
第二种方式删除的文件,不能在废纸篓中找到,也就是所谓的“彻底删除了”
但是我们在使用terminal的时候,一般都会使用rm删除文件,那要是删错了不就完了?而且我们的mac上本身又自带了废纸篓,为什么不能将两者结合起来呢?于是我做了一些探究

Mac废纸篓的真实面目

$ ls ~/.Trash

你会发现,~/.Trash目录就是废纸篓
但是它只是一个普通的目录,只是Finder将删除的文件移动到了这个目录而已,不相信?接着往下看

~/.Trash的本质只是文件夹

$ cd ~
$ echo "666666" >> wantodel.txt
$ mv wantodel.txt ~/.Trash

此时打开你的废纸篓一看,里面有一个wantodel.txt文件,但是你无法将它还原到原处,也就是没有记录你的完整操作行为
这里写图片描述

Finder是如何记录完整操作行为的呢?

最有可能是通过数据库来存放的,而非日志的形式
因为我grep了整个磁盘都没找到相关的文件

最好的帮手是Finder

既然~/.Trash只是普通文件夹,那我们单纯使用linux命令是无法达到目的的了。
牛顿说过要站在巨人的肩膀上,我们现在已知Finder可以达到预期目的,如果我们能调用或是告诉Finder的我们要做什么,并且它也愿意做,不就可以达到目的了么?
在window中有一个消息的概念,意思是一个应用程序A可以对另一个应用程序B发送消息以操作B来完成某项指定的任务,那Mac种是否也有这种或是类似这种的机制呢?
答案是AppleScript,是一种脚本语言,可以用来控制Mac上的应用程序。
最后附上使用shell通知Finder程序移动文件废纸篓的样例代码

#!/bin/bash
fp=/absolute/path/to/file
osascript << EOF
tell application "Finder"
    posix path of ((delete posix file "${fp}") as unicode text)
end tell
EOF
发布了63 篇原创文章 · 获赞 55 · 访问量 15万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览