搜索已安装应用程序的执行路径

搜索已安装应用程序的执行路径

我不仅想找到已安装的内容,还想显示执行应用程序的路径作为搜索结果。

所以我考虑dpkg -lwhich命令结合使用。我想制作一个脚本来检查仍安装的 GUI 应用程序的路径并显示执行路径,以便为每个应用程序创建或验证是否存在 .desktop 文件。

这适用吗?

Cinnamon 5.2.7菜单中的执行路径示例:

  • protontricks --no-term --gui
  • env BAMF_DESKTOP_FILE_HINT=/var/lib/snapd/desktop/applications/spotify_spotify.desktop /snap/bin/spotify %U
  • /opt/google/chrome/google-chrome --profile-directory=Default --app-id=*some long id here corresponding to my gmail*
  • wine C:/windows/notepad.exe
  • /usr/sbin/gparted %f
  • pkexec lightdm-settings
  • dbus-send --print-reply --dest=org.Cinnamon /org/Cinnamon org.Cinnamon.ToggleKeyboard

有很多可能性。所以我想我会先用典型的应用程序来确认,比如 gedit。

wich gedit输出:

/usr/bin/gedit

我做到了:dpkg -l |awk '/^[hi]i/{print $2}' > installation.txt

但这并没有仅列出 GUI 应用程序。我想我可以将输出与.desktop中包含的文件进行比较/usr/share/applications

所以我想知道如何在哪个命令上应用installation.txt的输出变量?

which | cat installation.txt仅列出文件中的内容。使用以下命令可解决此问题:xargs < installation.txt which

由于我通过升级桌面环境解决了我的问题,所以我不再需要对这篇文章做出具体的回答。


参考:

问题来源:

答案1

使用 which 的问题在于,它会找到并非全部都是图形应用程序的二进制文件,其中许多文件无法与 .desktop 文件很好地配合使用,或者可能需要桌面文件中的特殊选项。即使是系统桌面文件,路径中的二进制文件和桌面文件之间也不是 1:1 的对应关系——同一个二进制文件可能有多个桌面文件,而且并非所有二进制文件都有桌面文件。

与之相反,最好使用dpkg -L packages... | grep desktop并找出它保存桌面文件的系统副本的位置。

正如我在另一个问题中已经发布的那样,更好的解决方案可能是清除(或者更好的是重命名)您的本地帐户应用程序文件夹并重建它。

相关内容