作者:总会有办法的 | 来源:互联网 | 2023-08-10 14:46
当初我买MacBookAir的时刻专程挑选了高配版本,硬盘空间是128G(2011年的骨董机械),在最最先的1-2年内运用还不错,厥后发明愈来愈力不从心,为了尽量腾出空间,险些把一
当初我买MacBook Air的时刻专程挑选了高配版本,硬盘空间是128G(2011年的骨董机械),在最最先的1-2年内运用还不错,厥后发明愈来愈力不从心,为了尽量腾出空间,险些把一切的照片、视频和PDF文档都移到了云上,也经常常使用CleanMyMac等东西举行清算,但照样发明空间被一些已卸载的App蚕食,既然没有更好的计划,那就自身写一个东西来清算吧。
前几节内容是比较烦琐的手艺引见,不感兴趣的同砚能够直接跳到东西的运用那一节
App最喜欢的几个目次
Mac和Windows操纵体系有一个很大的差别,大部份App是没有装置顺序的,平常下载下来就是一个dmg文件,解开以后直接将App拖到运用顺序
目次下就可以够了,所以给人觉得卸载也就是将App拖到废纸篓
然后清空。假如然如许做就大错特错,纵然一个最简朴的App都邑在下面几个目次中或多或少留下留念,这些目次平常有:
~/Library
~/Library/Application Support
~/Library/Application Support/CrashReporter
~/Library/Caches
~/Library/Containers
~/Library/LaunchAgents
~/Library/Preferences
~/Library/PreferencePanes
假如一个顺序是经由过程pkg
体式格局装置,或者是在第一次运转时要求管理员权限,那平常还会在以下几个目次中留点留念:
以上都照样只是列出了部份,差别的App由于须要还会在其他目次中装置一些文件,比方字处理软件平常会在/Library/Fonts下面装置字体,有些扩大组件会放在/Library/ScriptingAdditions下面。
限于篇幅,我不能逐一引见一切目次的内容,选几个重点的目次大概说一下:
~/Library/Application Support
这个目次能够说是App最主要的文件目次,一些App自身并不大,然则须要的支撑组件和内容异常多,特别是采纳第三方插件和缓存收集内容的软件,比方我用的Dash
,自身的大小只需24MB摆布,然则由于常常阅读材料,所以缓存了许多收集内容,使得它的Support目次达到了1.37GB!可想而知,假如只是将App扔到废纸篓,险些不会节约任何空间。
~/Library/Preferences
这个目次下保留的是App设置,平常来讲,轻微有点范围的软件都有自身的设置信息,放在这里的文件虽然占空间不多,然则清算掉照样有优点的,比方有些App不能一般事情,纵然卸载重装也不可,每每就是设置文件出错了,把这里清算掉以后再重装就会有比较好的效果。
~/Library/Containers
这个目次关于App Store上下载的软件来讲,是最主要的一个目次,由于Apple的限定,AppStore的软件都在沙箱
中运转,每一个软件在沙箱都有自身的一个完全空间,关于App来讲,它认为自身在一个一般的目次体系中运转,但实际上不是,操纵体系重定位了读写位置到沙箱当中。
如果卸载软件的时刻,只是简朴的在Launchpad
中点一下叉来删除,那不晓得又有若干空间稀里糊涂地消逝了,我曾用这类体式格局卸载了网易云音乐,效果厥后才发明,整整417MB的空间不见了……
~/Library/LaunchAgents
Mac上的随机启动体式格局之一,熟习OS X操纵体系的同砚应当马上想到了launchctl
,这里就是寄存启动设置文件的处所,大部份App只会往这里写启动信息,请神容易送神难,要送神,只需用第三方东西或是自身手动清算了,另有,LaunchAgents 和 LaunchDaemons 是有一些区分的,二者虽然都是随机启动,细致对照请看LaunchAgents VS LaunchDaemons
本东西的概述
直到如今我还在想,如果用Cocoa来写这个东西的话,顺序会小许多,如今这个顺序压缩包有40+MB,实在绝大部份都是Electron、React的框架库,真正的代码也就几个文件,加起来不到1M大小。而之所以挑选用Javascript来做,实在就是想考证一下React开辟一个桌面运用究竟会如何,Javascript是否是有一统江湖的本领?
用Javascript最大的挂念或许是机能题目,顺序虽然难度不大,也有几个运算比较麋集的处所,一是plist信息的剖析,二是正则表达式。我将plist剖析放到外部库去做了,正则表达式依然用Google的V8引擎,现在来看还行。
顺序的I/O比较多,须要频仍统计文件占用空间大小,查找相干文件,读取文件信息,虽然Javascript的最大优点是异步操纵,然则在统计出效果之前,界面能做出再多的相应也没有什么意义,因此在有些处所,我没有运用异步操纵,如果你觉得界面有点卡,那是我的缘由,不是React的错:)
再给人人引荐一下Mac体系上自带的AppleScript,这个是Mac上的瑞士军刀,能和Windows上的Powershell有得一比,我在这个软件中末了的清算事情实质上就是经由过程AppleScript来完成的,比方清算事情首先要封闭目的顺序,你如果自身编程盘算如何完成?罗列体系历程然后kill?用AppleScript就可以异常文雅地完成,比方你翻开Safari,再同时开一个终端窗口,然后在终端中输入
osascript -e 'quit app "safari"'
名字的因由
来自于同名影戏《Total Recall》,奎德在一次假造体验以后,倏忽发明自身本来不是一个默默无闻的工人,而是一个超等奸细,那自身究竟是什么呢?或许真正的自身永久也找不回来了,然则最少不是如今如许胡里胡涂。
我也想借这个意义示意纵然经由过程勤奋清算,也不一定能复原到最初的状况,但最少不会这么蹩脚。
东西的运用
这个彷佛没有什么太多能够说的了,我只是对照了和CleanMyMac的清算效果,最少,在大部份情况下,我觉得还不错。
卸载百度云的对照
能够清楚地看到,CleanMyMac没有找到百度云的Application Support目次,另外,只找到了登录项,没有找到启动项和启动文件。
Total Recall不仅找到了CleanMyMac一切的内容,还找到了Application Support,这里有1.14MB空间,另外还找到了LaunchDeamons内里的启动项和启动文件,还发明了com.baidu.netdiskmac.BDYunFinderInstaller
这么一个鬼……
比较一下卸载AppStore上的App
CleanMyMac列出了一大堆觉得挺吓人的,仔细看才发明实在都是Containers\com.tencent.xinWeChat
这个目次内里的子目次,还拿一个体系暂时目次来凑数(电脑重启后体系暂时目次都邑清空),卸载的时刻实在只需删除沙箱目次就高枕无忧。
存在的不足
参考内容
《深切剖析MAC OS X & IOS操纵体系》 这本书关于想相识Mac体系的人来讲是不贰之选,值得具有
Information Property List Key Reference App里最主要的文件Info.plist的引见,开辟必备
Electron 假如盘算用Electron构建一个桌面App,必需从这里最先
React React的官方网站,虽然我的界面做得挺丢脸,那是由于我还不怎样会玩css
Total Recall 这……