如何在mac中删除访达不存在的app
如何在mac中删除访达不存在的app
背景
在mac中先删除一个应用,通常来说直接在folder在中将相应的文件删除即可。
1. 打开 访达 -> 应用程序
2. 找到要删除的应用,将其拖到废纸篓
偶然一次删除应用后,发现在 launchpad 中还有对应的对应的图标,长按该图标也没有删除按钮。
结论
直接上操作步骤
- 在终端上找到存储 launchpad 中应用信息的数据库信息
- 通过sqlite的语法,找到并删除对应的应用数据行
- 重启Dock
有相关基础&理解了本质的同学可以无视下面的详细步骤
操作步骤
1、打开终端
mac中有一个自带的app,叫做 终端,打开launchpad或者本地搜索一下,相信自己,一定可以找到。
必须用终端?
有同学说,我安装了iterm2,用这个行不行
都可以,目的是操作sqlite数据库,用什么工具不重要
2、找到要删除的app
找到并进入 launchpad 的sqlite数据文件所在的目录
cd $(find /private/var/folders/ -name "com.apple.dock.launchpad" 2>/dev/null)/db
通过sql,在sqlite中查找app的数据行,将微信替换为你要删除的应用完整名称
sqlite3 db "select * from apps where title = '微信';"
如果名称无误,应该可以看到下面的结果,就可以继续下一个步骤
69|微信|com.tencent.xinWeChat||9|693988904.710185|book,
解释一下命令的含义
关于命令 cd $(find /private/var/folders/ -name "com.apple.dock.launchpad" 2>/dev/null)/db
设: xxx = find /private/var/folders/ -name "com.apple.dock.launchpad" 2>/dev/null
则: 原命令 = cd $(xxx)/db
可以看出,这本质是一个进入目录的命令,详细解释如下:
- 全局来看,通过cd命令进入指定目录
- $(xxx) 可以将xxx的结果作为cd命令的参数,这里是找到名为 com.apple.dock.launchpad 的文件夹
- 通过find命令来查找指定名称的文件
- find可能找到很多指定名称的文件,其中绝大部分是没有权限访问,2>/dev/null可以过滤掉这些结果,以保证有且只有一条结果被找到
- sqlite 本质是一个数据库,懂sql也要小心操作,操作失误可能导致操作系统异常
3、删除app 并 重启Dock
警告
如果确认app准确无误,还是没有结果,下面的命令不要执行!
如果确认app准确无误,还是没有结果,下面的命令不要执行!
如果确认app准确无误,还是没有结果,下面的命令不要执行!
重要的话说三遍,这一步一定要确定找到了目标再执行!
如果没有结果 注意一下你输入的app名称
sqlite3 db "delete from apps where title = '微信';" && killall Dock
killall Dock 命令可以关闭Dock对应的进程,不用担心,操作系统会自动重启这个进程。
还是没搞定?
如果还是没有解决问题,欢迎在评论区留言,24小时内回复