编辑:这不是重复的,因为这个问题与另一个问题相反。在这里我们知道应用程序是什么,我们想找到它的.desktop
文件,该文件也可以位于非标准位置。而另一个问题是关于.desktop
文件可以放在哪里。
我想在默认图像查看器中而不是在浏览器中打开来自 FTP 服务器的图像,所以我想知道 Ubuntu 中默认图像查看器桌面文件的路径。我尝试了以下操作:
cd -- /usr/share/applications
/usr/share/applications
$ find . -name '*.desktop' | grep image
./gnome-disk-image-mounter.desktop
./gnome-disk-image-writer.desktop
$ find . -name '*.desktop' | grep view
./calibre-ebook-viewer.desktop
./calibre-lrfviewer.desktop
./evince-previewer.desktop
./shotwell-viewer.desktop
./okularApplication_ghostview.desktop
./gcr-viewer.desktop
./gnome-info-overview-panel.desktop
./org.gnome.font-viewer.desktop
./paraview.desktop
但我仍然找不到它。桌面文件还存储在其他地方吗?
答案1
使用命令可以实现更快、更通用的搜索locate
:
$ locate '*image*desktop'
/usr/share/app-install/desktop/gimagereader:gimagereader-gtk.desktop
/usr/share/app-install/desktop/gnome-disk-utility:gnome-disk-image-mounter.desktop
/usr/share/app-install/desktop/gnome-disk-utility:gnome-disk-image-writer.desktop
/usr/share/app-install/desktop/imagej:imagej.desktop
/usr/share/app-install/desktop/imagemagick-6.q16:display-im6.q16.desktop
/usr/share/app-install/desktop/imagemagick:display-im6.desktop
/usr/share/app-install/desktop/imagevis3d:imagevis3d.desktop
/usr/share/app-install/desktop/kimagemapeditor:kde4__kimagemapeditor.desktop
/usr/share/app-install/desktop/simple-image-reducer:simple-image-reducer.desktop
/usr/share/app-install/desktop/trimage:trimage.desktop
/usr/share/applications/gnome-disk-image-mounter.desktop
/usr/share/applications/gnome-disk-image-writer.desktop
/usr/share/applications/screensavers/tessellimage.desktop
locate
可以在几秒钟内搜索数百万个文件,而之前则需要花费find
很多分钟:
$ time find / -name '*image*.desktop'
real 0m52.563s
user 0m6.271s
sys 0m9.002s
$ time locate '*image*desktop'
real 0m0.705s
user 0m0.693s
sys 0m0.012s
注意如何grep
从原始方法中消除并find
修改命令。
缺点locate
是数据库每天都会更新。如果你刚刚安装了今天要搜索的应用程序,你首先需要运行:
sudo updatedb
安装
在较新版本的 Ubuntu 中,你可以locate
通过安装以下包来安装plocate
:
sudo apt install plocate
答案2
.desktop
按内容搜索启动器
文件名desktop
本身可能不足以揭示足够的信息。基本方法是.desktop
搜索系统所有文件的内容找到相关的一个(些)。
例如,图像查看器将显示为Image Viewer
应用程序概览中的格式。Gnome Shell 从.desktop
文件中获取了该标签。要查找.desktop
包含此字符串的文件(或多个文件),请执行
find / -name '*.desktop' -exec grep -H 'Image Viewer' {} \; 2>/dev/null
它用于find
查找.desktop
系统上的所有文件。对于找到的每个文件,grep
都会调用 ,它会在文件中搜索字符串,在本例中为Image Viewer
。这2>/dev/null
会抑制在没有 root 权限的情况下搜索 root 驱动器时不可避免地出现的权限错误。
桌面启动器搜索顺序
系统上可能存在多个.desktop
同名的启动器。实际使用的启动器取决于其所在位置。
系统首先.desktop
在您的本地~/.local/share/applications
目录中搜索文件,然后搜索applications
变量中包含的目录下存在的目录$XDG_DATA_DIRS
。
例如,可以显示的内容XDG_DATA_DIRS
如下
$ printenv XDG_DATA_DIRS
/usr/share/ubuntu: /usr/local/share/:/usr/share/:/var/lib/snapd/desktop
系统首先搜索~/.local/share/applications
,然后搜索/usr/share/ubuntu/applications
等等。.desktop
在这个搜索路径中或者系统其他地方,具有相同名称的启动器不会被使用。