跳至主要內容

如何在mac中删除访达不存在的app

大约 3 分钟...mac

如何在mac中删除访达不存在的app

背景

在mac中先删除一个应用,通常来说直接在folder在中将相应的文件删除即可。

1. 打开 访达 -> 应用程序
2. 找到要删除的应用,将其拖到废纸篓

偶然一次删除应用后,发现在 launchpad 中还有对应的对应的图标,长按该图标也没有删除按钮。

结论

直接上操作步骤

  1. 在终端上找到存储 launchpad 中应用信息的数据库信息
  2. 通过sqlite的语法,找到并删除对应的应用数据行
  3. 重启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

可以看出,这本质是一个进入目录的命令,详细解释如下:

  1. 全局来看,通过cd命令进入指定目录
  2. $(xxx) 可以将xxx的结果作为cd命令的参数,这里是找到名为 com.apple.dock.launchpad 的文件夹
  3. 通过find命令来查找指定名称的文件
  4. find可能找到很多指定名称的文件,其中绝大部分是没有权限访问,2>/dev/null可以过滤掉这些结果,以保证有且只有一条结果被找到
  5. sqlite 本质是一个数据库,懂sql也要小心操作,操作失误可能导致操作系统异常

3、删除app 并 重启Dock

警告

如果确认app准确无误,还是没有结果,下面的命令不要执行!
如果确认app准确无误,还是没有结果,下面的命令不要执行!
如果确认app准确无误,还是没有结果,下面的命令不要执行!

重要的话说三遍,这一步一定要确定找到了目标再执行!

如果没有结果 注意一下你输入的app名称

sqlite3 db "delete from apps where title = '微信';" && killall Dock

killall Dock 命令可以关闭Dock对应的进程,不用担心,操作系统会自动重启这个进程。

还是没搞定?

如果还是没有解决问题,欢迎在评论区留言,24小时内回复

上次编辑于:
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.6