AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 16580
Accepted
Stann
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 10 个回答
  • 78509 Views

10 个回答

  • Voted
  1. 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提供系统默认值的信息。除非您另有选择,否则这些是您“打开”文件时使用的应用程序。

    • 70
  2. 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。

    • 26
  3. 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,现在正确的应用程序打开了该文件。

    • 24
  4. 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。

    • 11
  5. 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]部分用于显式删除任何以前继承的关联。

    • 8
  6. 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>
    
    • 7
  7. 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
    

    将自动编辑这些文件。

    • 5
  8. Jimmy He
    2019-08-06T22:00:54+08:002019-08-06T22:00:54+08:00

    在 Ubuntu 18.04 上,我发现优先顺序如下,从强到弱:

    1. ~/.local/share/applications/defaults.list
    2. /usr/share/applications/defaults.list
    3. ~/.config/mimeapps.list(“使用其他应用程序打开”将对此进行更新)
    4. ~/.local/share/applications/mimeapps.list
    5. mimeinfo.cache在兼容应用程序的注册表中遇到的第一个匹配项是从和中.desktop存在的文件生成的,并且可以使用 重新生成。/usr/share/applications/usr/local/share/applicationsupdate-desktop-database
    6. (没用过)/etc/gnome/defaults.list
    • 5
  9. 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文件(您可以使用现有文件)。我做了额外的步骤,因此当我不可避免地改变图像预览器之间的忠诚度时,我只需要更改那个文件。

    • 2
  10. 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

    • 2

相关问题

  • 文件扩展名/mime-types/icons/default 应用程序是如何关联的?

  • 如何从命令行获取文件的 mime 类型?

  • examples.desktop 是做什么的?

  • 查看或转换 MDI 文件 [关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何安装 .run 文件?

    • 7 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    如何获得 CPU 温度?

    • 21 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Marko Smith

    你如何重新启动Apache?

    • 13 个回答
  • Marko Smith

    如何卸载软件?

    • 11 个回答
  • Marko Smith

    如何删除 PPA?

    • 26 个回答
  • Martin Hope
    NES 如何启用或禁用服务? 2010-12-30 13:03:32 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    Olivier Lalonde 如何在结束 ssh 会话后保持进程运行? 2010-10-22 04:09:13 +0800 CST
  • Martin Hope
    David B 如何使用命令行将用户添加为新的 sudoer? 2010-10-16 04:02:45 +0800 CST
  • Martin Hope
    Hans 如何删除旧内核版本以清理启动菜单? 2010-08-21 19:37:01 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve