Stann Asked: 2010-12-08 12:29:20 +0800 CST2010-12-08 12:29:20 +0800 CST 2010-12-08 12:29:20 +0800 CST 文件关联存储在哪里? 772 Ubuntu 或任何其他 Linux 系统如何存储文件关联? 有没有/etc/asscociations文件什么的? 我知道我可以右键单击文件并通过“打开方式”更改它,但我只是想知道它是如何在内部存储的。 files mime-type file-association 10 个回答 Voted Best Answer dv3500ea 2010-12-08T12:51:43+08:002010-12-08T12:51:43+08:00 文件管理器(默认为 Nautilus)使用文件的MIME 类型来确定使用哪个程序打开它。安装应用程序时,它可以指定可以打开的 MIME 类型以及用于打开 .desktop 文件中文件的命令,该文件位于 .desktop 文件中/usr/share/applications。这是用于菜单、桌面快捷方式等的文件。 例如,GIMP 有以下 .desktop 文件: [Desktop Entry] Version=1.0 Type=Application Name=GNU Image Manipulation Program GenericName=Image Editor Comment=Create images and edit photographs Exec=gimp-2.7 %U TryExec=gimp-2.7 Icon=gimp Terminal=false Categories=Graphics;2DGraphics;RasterGraphics;GTK; X-GNOME-Bugzilla-Bugzilla=GNOME X-GNOME-Bugzilla-Product=GIMP X-GNOME-Bugzilla-Component=General X-GNOME-Bugzilla-Version=2.7.2 X-GNOME-Bugzilla-OtherBinaries=gimp-2.7 StartupNotify=true MimeType=application/postscript;application/pdf;image/bmp;image/g3fax;image/gif;image/x-fits;image/pcx;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-psd;image/x-sgi;image/x-tga;image/x-xbitmap;image/x-xwindowdump;image/x-xcf;image/x-compressed-xcf;image/tiff;image/jpeg;image/x-psp;image/png;image/x-icon;image/x-xpixmap;image/svg+xml;application/pdf;image/x-wmf;image/jp2;image/jpeg2000;image/jpx;image/x-xcursor; 查看该MimeType字段 - 这列出了支持的 MIME 类型。该Exec字段告诉系统使用命令gimp-2.7 %U,将“%U”替换为要打开的文件。(注意 GIMP 2.7 是我从 PPA 安装的版本,因此高于 Ubuntu 存储库中的当前版本)。 安装应用程序包时,系统会将此 MIME 类型的数据提取到更易于访问的数据库中,因为如果每次打开文件时都查看每个 .desktop 文件将花费太长时间。 这告诉系统哪些应用程序可用于该 MIME 类型,并在“打开方式”列表中提供应用程序。默认值在别处定义。该文件/usr/share/applications/defaults.list提供系统默认值的信息。除非您另有选择,否则这些是您“打开”文件时使用的应用程序。 user8979 2011-01-30T03:42:51+08:002011-01-30T03:42:51+08:00 为了补充 dv3500ea 的出色答案,我想添加一些有关更改关联时会发生什么的信息。 虽然 defaults.list(您可以通过键入 'locate defaults.list' 找到)提供与每种 MIME 类型相关联的应用程序列表,但您所做的任何自定义都存储在您的主目录中,在 ~/.local/共享/应用程序/mimeapps.list。因此,如果您添加或删除关联,或更改默认关联,则此文件会更新。 http://library.gnome.org/admin/system-admin-guide/stable/上的 GNOME 桌面系统管理指南似乎没有讨论 mimeapps.list,但我在http://live.gnome上找到了以下描述.org/SysAdminGuideUpdate: mimeapps.list 位于 $XDG_DATA_DIRS/applications。其目的是在应用程序中添加或删除 mime 关联。当用户在“打开方式”对话框中进行更改时,nautilus 会写入 ~/.local/share/applications/mimeapps.list。 Bryan Leaman 2015-01-11T10:24:47+08:002015-01-11T10:24:47+08:00 我发现在我的系统(Debian Jessie)上还有~/.config/mimeapps.list一个关联,我不小心创建了一个关联来使用 gedit 打开特定的文件类型。纠正这个问题的标准方法(默认应用程序设置,Thunar 的open with属性)都没有反映这一点,但 gedit 是默认应用程序。 我能够从中删除该行~/.config/mimeapps.list,现在正确的应用程序打开了该文件。 warvariuc 2015-06-22T02:00:59+08:002015-06-22T02:00:59+08:00 我能够设置这样的关联: xdg-mime default xnview.desktop image/jpeg 您还可以删除关联并执行其他操作:man xdg-mime 我不需要跑sudo update-desktop-database。 IdontCareAboutReputationPoints 2013-08-24T00:16:35+08:002013-08-24T00:16:35+08:00 我发现这个关于默认关联的链接,它可能会有所帮助。 https://wiki.archlinux.org/index.php/Default_Applications 全球关联: /usr/share/applications/mimeapps.list 每个用户关联: ~/.local/share/applications/mimeapps.list 语法如下: [Added Associations] mimetype=desktopfile1;desktopfile2;...;desktopfileN ... [Removed Associations] mimetype=desktopfile1;desktopfile2;...;desktopfileN [Added Associations]部分用于以递减的方式指定首选(默认)应用程序。这意味着desktopfile1是最喜欢的,而desktopfileN是最不喜欢的。 [Removed Associations]部分用于显式删除任何以前继承的关联。 Blindfreddy 2012-03-14T08:32:52+08:002012-03-14T08:32:52+08:00 使用以下行truecrypt.desktop创建一个文件:~/.local/share/applications [Desktop Entry] Encoding=UTF-8 Type=Application Icon= Exec=/usr/bin/truecrypt %U Name=truecrypt Comment=manage truecrypt volumes 然后编辑文件~/.local/share/applications/mimeapps.list并添加以下行: application/octet-stream=truecrypt.desktop 我通过运行以下命令找到了 Truecrypt 的 mime 类型: file --mime-type -b <any truecrypt filename> Ciro Santilli OurBigBook.com 2017-01-20T01:22:11+08:002017-01-20T01:22:11+08:00 mimeapps.list搜索路径 其他人提到了这个文件,但没有人准确地解释它的位置。 freedesktop.org 标准在https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.html说: 该文件的查找顺序如下: $XDG_CONFIG_HOME/$desktop-mimeapps.list user overrides, desktop-specific (for advanced users) $XDG_CONFIG_HOME/mimeapps.list user overrides (recommended location for user configuration GUIs) $XDG_CONFIG_DIRS/$desktop-mimeapps.list sysadmin and ISV overrides, desktop-specific $XDG_CONFIG_DIRS/mimeapps.list sysadmin and ISV overrides $XDG_DATA_HOME/applications/$desktop-mimeapps.list for completeness, deprecated, desktop-specific $XDG_DATA_HOME/applications/mimeapps.list for compatibility, deprecated $XDG_DATA_DIRS/applications/$desktop-mimeapps.list distribution-provided defaults, desktop-specific $XDG_DATA_DIRS/applications/mimeapps.list distribution-provided defaults 然后在https://specifications.freedesktop.org/basedir-spec/basedir-spec-0.6.html中给出了这些环境变量的默认值: $XDG_DATA_HOME:$HOME/.local/share $XDG_CONFIG_HOME:$HOME/.config $XDG_DATA_DIRS: 无,附加到XDG_DATA_HOME $XDG_CONFIG_DIRS: 无,附加到XDG_CONFIG_HOME 旧版本的 Ubuntu 可能无法检查~/.config,因此请确保您也尝试一下~/.local/share。 类似的命令: xdg-settings set default-web-browser chromium-browser.desktop xdg-settings get default-web-browser 将自动编辑这些文件。 Jimmy He 2019-08-06T22:00:54+08:002019-08-06T22:00:54+08:00 在 Ubuntu 18.04 上,我发现优先顺序如下,从强到弱: ~/.local/share/applications/defaults.list /usr/share/applications/defaults.list ~/.config/mimeapps.list(“使用其他应用程序打开”将对此进行更新) ~/.local/share/applications/mimeapps.list mimeinfo.cache在兼容应用程序的注册表中遇到的第一个匹配项是从和中.desktop存在的文件生成的,并且可以使用 重新生成。/usr/share/applications/usr/local/share/applicationsupdate-desktop-database (没用过)/etc/gnome/defaults.list Adam Katz 2016-09-08T17:36:26+08:002016-09-08T17:36:26+08:00 Freedesktop.org(以前称为 X Desktop Group,因此是“XDG”的缩写)是目前推动此类 X 标准的组织(在 Wikipedia 了解更多信息)。 warvariuc 的回答已经提到了xdg-mime 的用法,例如: xdg-mime default xnview.desktop image/jpeg 在大量使用图像编辑器和查看器之后,我最终为不同的图像类型使用了不同的查看器,几乎没有一致性,尤其是在稀有的图像类型中。 我采用上述命令并将其分配给图像查看器控制的每种 MIME 类型,然后image-viewer.desktop通过克隆其中一个来创建新的(这是可选的,您只能重复使用您喜欢的)。接下来,我手动验证了所有 MIME 类型都不会与我的新首选应用程序不兼容。最后,我将该应用程序设置为所有其他应用程序的 MIME 类型的默认值: sed '/^MimeType=/!d; s///; s/;/\n/g' \ /usr/share/applications/{ristretto,geeqie,gthumb}.desktop |sort -u \ |xargs xdg-mime default image-viewer.desktop 这将检查.desktop每个查看器的文件(在我的情况下为Ristretto、Geeqie和GThumb),提取 MIME 定义(以分号分隔的列表开头MimeType=,然后包含分号分隔的列表),删除(先前匹配的)前言标签,并将列表拆分为每行一个条目。 sort -u然后删除多余的行,然后将它们交给xdg-mime设置新的默认值。 (如果您想在实时运行之前对其进行测试,请更改xargs为xargs echo,它将打印结果命令而不是运行它。) 这种技术应该适用于您想要为目标应用程序回收的任何东西。您甚至不需要创建新.desktop文件(您可以使用现有文件)。我做了额外的步骤,因此当我不可避免地改变图像预览器之间的忠诚度时,我只需要更改那个文件。 Xoristzatziki 2017-08-02T23:19:17+08:002017-08-02T23:19:17+08:00 对于所有用户: /usr/share/applications/defaults.list 每个用户都有一个用于覆盖这些默认值的配置文件: ~/.config/mimeapps.list 另请参阅https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.1.html了解可能用于覆盖默认值的位置。 您必须知道要更改其关联的文件的 MIME 类型。 此外,所有关联都可以在命令行中使用: xdg-mime
文件管理器(默认为 Nautilus)使用文件的MIME 类型来确定使用哪个程序打开它。安装应用程序时,它可以指定可以打开的 MIME 类型以及用于打开 .desktop 文件中文件的命令,该文件位于 .desktop 文件中
/usr/share/applications
。这是用于菜单、桌面快捷方式等的文件。例如,GIMP 有以下 .desktop 文件:
查看该
MimeType
字段 - 这列出了支持的 MIME 类型。该Exec
字段告诉系统使用命令gimp-2.7 %U
,将“%U”替换为要打开的文件。(注意 GIMP 2.7 是我从 PPA 安装的版本,因此高于 Ubuntu 存储库中的当前版本)。安装应用程序包时,系统会将此 MIME 类型的数据提取到更易于访问的数据库中,因为如果每次打开文件时都查看每个 .desktop 文件将花费太长时间。
这告诉系统哪些应用程序可用于该 MIME 类型,并在“打开方式”列表中提供应用程序。默认值在别处定义。该文件
/usr/share/applications/defaults.list
提供系统默认值的信息。除非您另有选择,否则这些是您“打开”文件时使用的应用程序。为了补充 dv3500ea 的出色答案,我想添加一些有关更改关联时会发生什么的信息。
虽然 defaults.list(您可以通过键入 'locate defaults.list' 找到)提供与每种 MIME 类型相关联的应用程序列表,但您所做的任何自定义都存储在您的主目录中,在 ~/.local/共享/应用程序/mimeapps.list。因此,如果您添加或删除关联,或更改默认关联,则此文件会更新。
http://library.gnome.org/admin/system-admin-guide/stable/上的 GNOME 桌面系统管理指南似乎没有讨论 mimeapps.list,但我在http://live.gnome上找到了以下描述.org/SysAdminGuideUpdate:
我发现在我的系统(Debian Jessie)上还有
~/.config/mimeapps.list
一个关联,我不小心创建了一个关联来使用 gedit 打开特定的文件类型。纠正这个问题的标准方法(默认应用程序设置,Thunar 的open with属性)都没有反映这一点,但 gedit 是默认应用程序。我能够从中删除该行
~/.config/mimeapps.list
,现在正确的应用程序打开了该文件。我能够设置这样的关联:
您还可以删除关联并执行其他操作:
man xdg-mime
我不需要跑
sudo update-desktop-database
。我发现这个关于默认关联的链接,它可能会有所帮助。 https://wiki.archlinux.org/index.php/Default_Applications
全球关联:
每个用户关联:
语法如下:
[Added Associations]部分用于以递减的方式指定首选(默认)应用程序。这意味着desktopfile1是最喜欢的,而desktopfileN是最不喜欢的。
[Removed Associations]部分用于显式删除任何以前继承的关联。
使用以下行
truecrypt.desktop
创建一个文件:~/.local/share/applications
然后编辑文件
~/.local/share/applications/mimeapps.list
并添加以下行:我通过运行以下命令找到了 Truecrypt 的 mime 类型:
mimeapps.list
搜索路径其他人提到了这个文件,但没有人准确地解释它的位置。
freedesktop.org 标准在https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.html说:
然后在https://specifications.freedesktop.org/basedir-spec/basedir-spec-0.6.html中给出了这些环境变量的默认值:
$XDG_DATA_HOME
:$HOME/.local/share
$XDG_CONFIG_HOME
:$HOME/.config
$XDG_DATA_DIRS
: 无,附加到XDG_DATA_HOME
$XDG_CONFIG_DIRS
: 无,附加到XDG_CONFIG_HOME
旧版本的 Ubuntu 可能无法检查
~/.config
,因此请确保您也尝试一下~/.local/share
。类似的命令:
将自动编辑这些文件。
在 Ubuntu 18.04 上,我发现优先顺序如下,从强到弱:
~/.local/share/applications/defaults.list
/usr/share/applications/defaults.list
~/.config/mimeapps.list
(“使用其他应用程序打开”将对此进行更新)~/.local/share/applications/mimeapps.list
mimeinfo.cache
在兼容应用程序的注册表中遇到的第一个匹配项是从和中.desktop
存在的文件生成的,并且可以使用 重新生成。/usr/share/applications
/usr/local/share/applications
update-desktop-database
/etc/gnome/defaults.list
Freedesktop.org(以前称为 X Desktop Group,因此是“XDG”的缩写)是目前推动此类 X 标准的组织(在 Wikipedia 了解更多信息)。
warvariuc 的回答已经提到了xdg-mime 的用法,例如:
在大量使用图像编辑器和查看器之后,我最终为不同的图像类型使用了不同的查看器,几乎没有一致性,尤其是在稀有的图像类型中。
我采用上述命令并将其分配给图像查看器控制的每种 MIME 类型,然后
image-viewer.desktop
通过克隆其中一个来创建新的(这是可选的,您只能重复使用您喜欢的)。接下来,我手动验证了所有 MIME 类型都不会与我的新首选应用程序不兼容。最后,我将该应用程序设置为所有其他应用程序的 MIME 类型的默认值:这将检查
.desktop
每个查看器的文件(在我的情况下为Ristretto、Geeqie和GThumb),提取 MIME 定义(以分号分隔的列表开头MimeType=
,然后包含分号分隔的列表),删除(先前匹配的)前言标签,并将列表拆分为每行一个条目。sort -u
然后删除多余的行,然后将它们交给xdg-mime
设置新的默认值。(如果您想在实时运行之前对其进行测试,请更改
xargs
为xargs echo
,它将打印结果命令而不是运行它。)这种技术应该适用于您想要为目标应用程序回收的任何东西。您甚至不需要创建新
.desktop
文件(您可以使用现有文件)。我做了额外的步骤,因此当我不可避免地改变图像预览器之间的忠诚度时,我只需要更改那个文件。对于所有用户:
每个用户都有一个用于覆盖这些默认值的配置文件:
另请参阅https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.1.html了解可能用于覆盖默认值的位置。
您必须知道要更改其关联的文件的 MIME 类型。
此外,所有关联都可以在命令行中使用: