Linux 如何知道使用哪个应用程序来打开文件?

Linux 如何知道使用哪个应用程序来打开文件?

我已经有十年没有用过 Linux 了,所以我希望这个问题仍然有意义。我一直想知道 Linux 是如何做到这一点的,现在我又想到了。

在 Windows 操作系统中,文件通过其扩展名与应用程序相关联。例如,foo.txt 可以使用记事本 (txt) 打开。而 foo.xls 可以使用 Excel (xls) 打开。

在 Linux 中,文件名没有扩展名(现在有吗?),那么它如何知道使用哪个应用程序打开文件?如果文件名为 foo,我双击它,它实际上会在正确的应用程序中打开。如何做到的?

答案1

实际上,Linux 本身并不关心文件类型,它只关心文件是否可执行,而这由文件的属性而不是内容决定。但是,fileLinux 附带的工具可以提供帮助。 file将文件内容与数据库进行比较,并查找匹配项。各种文件格式在其标题中使用魔法数字,例如,每个 JPEG 文件都以 开头FFD8,以 结尾FFD9。您可能还记得,旧的 DOS 可执行文件总是以 开头MZ,这又是一个魔法数字。

答案2

大多数 Linux 桌面使用xdg-open幕后。查询本地xdg-mimeXML 数据库,可以根据文件的扩展名识别文件(如在 Windows 上),或者根据配置通过文件本身的魔法字节识别文件。

如果您想添加对其他文件类型的支持,您可以使用xdg-mime这一页记录其 XML 语义。

原则上也可以使用邮件封套对于这个(使用run-mailcap),它只查看扩展,但我很长时间没有看到可以这样做的桌面环境了。

相关内容