如何使用命令行获取与文件关联的应用程序列表

Rod*_*gel 6 command-line files

文件关联通常是在桌面环境中进行的,但是如何使用命令行获取与文件关联的应用程序列表?

就像是:

$ getassoc foo.pdf <CR>
$ acroread, okular
Run Code Online (Sandbox Code Playgroud)

不需要是命令,可以在任何 Gnome 文件上加cat+grep

我正在使用 Gnome 2.28.2。

slm*_*slm 7

真的没有一个集中的资源可以让你“查询”来获取这些信息。相反,它保存在几个文本文件中,如果您知道在哪里查看,您可以手动解析这些文件,或者您可以使用该工具xdg-mime来构建关系。

例子

假设我在磁盘上有一个 PNG 文件。我可以像这样找出它的 MIME 类型。

$ xdg-mime query filetype DSCN4747_DSCN4061_800x600.PNG 
image/png
Run Code Online (Sandbox Code Playgroud)

然后我可以查询xdg-mime询问这个特定 MIME 类型的关联是什么。

$ xdg-mime query default image/png
shotwell-viewer.desktop shutter.desktop
Run Code Online (Sandbox Code Playgroud)

查看mimeinfo.cache我的系统上的 ,我可以使用以下命令找到有关给定 MIME 类型关联的更多信息:

$ grep 'image/png' /usr/share/applications/mimeinfo.cache 
image/png=shutter.desktop;gpicview.desktop;gimp.desktop;eog.desktop;geeqie.desktop;shotwell-viewer.desktop;
Run Code Online (Sandbox Code Playgroud)

mimeinfo.cache文件中的桌面定义存储在此处:

$ locate shotwell-viewer.desktop
/usr/share/applications/shotwell-viewer.desktop
Run Code Online (Sandbox Code Playgroud)

它包含您要询问的可执行文件的名称:

$ grep 'Exec=' !$
grep 'Exec=' /usr/share/applications/shotwell-viewer.desktop
Exec=shotwell %f
Run Code Online (Sandbox Code Playgroud)

很多时候,如果我只是想启动一些东西,我会使用该工具xdg-open <file|URL>打开一个文件,而不是先去启动应用程序,然后再打开文件。

参考


X T*_*ian 5

您的本地配置文件

~/.local/share/applications/mimeapps.list
Run Code Online (Sandbox Code Playgroud)

全局配置文件

/usr/share/applications/mimeinfo.cache
Run Code Online (Sandbox Code Playgroud)

使用 sed 进行简单布局,

sed -e 's/=/\n\t/' -e 's/;/\n\t/g' /usr/share/applications/mimeinfo.cache
Run Code Online (Sandbox Code Playgroud)

示例输出,

...
image/x-xwindowdump*
    gimp.desktop
video/flv
    totem.desktop
    avidemux-gtk.desktop

application/vnd.sun.xml.math
    openoffice.org-math.desktop
application/vnd.scribus
    scribus.desktop
...
Run Code Online (Sandbox Code Playgroud)