linux - 如何获取可以在 Linux 中打开特定文件扩展名的程序列表?

标签 linux embedded-linux

基本上,我试图获取 Linux 中已安装的程序列表,例如可以打开特定文件扩展名 .jpg。如果不是全部,至少应该列出默认程序。

最佳答案

Linux(内核)不知道文件类型到应用程序的映射。如果你想使用 Gnome 程序,你可以查看 https://people.gnome.org/~shaunm/admin-guide/mimetypes-7.html .对于 KDE,还有另一种机制。每个工具包都可以随心所欲地定义它。程序员可以使用或不使用默认值。所以它只是特定于应用程序的!

你想达到什么目的?

如果您使用资源管理器/浏览器应用程序(双击)单击图标或文件名,资源管理器/浏览器会准确查找文件类型。通常这是通过 mime 类型字典实现的。但是程序如何查找文件类型并可能执行另一个程序只与编写该程序的程序员有关。 Gnome 和 KDE 等 GUI 工具链为该主题提供了很多支持,因此您对每个应用程序系列都有基本的一致性。

如果您想知道一个应用程序是如何完成这项工作的,请使用 strace 启动它。但是海量的数据很难挖掘。

您还可以查看 xdg-open。许多程序使用这个助手来启动应用程序。例如:如果您使用 strace 启动 Dolphin,您会发现类似 lstat64("/etc/xdg", {st_mode=S_IFDIR|0755, st_size=4096, ...} ) = 0 单击文件后。

您可以从命令行运行:

xdg-open <file-name>

您可能还想查看注册文件类型的应用程序:/usr/share/applications/*.desktop

在这里您可以在每个桌面文件中找到一些为应用程序注册的 mime 类型。例如。 audiacity 是:

MimeType=application/x-audacity-project;audio/flac;audio/x-flac;audio/basic;audio/x-aiff;audio/x-wav;application/ogg;audio/x-vorbis+ogg;

对于您使用 jpg 的示例:

$ xdg-mime query filetype <any-jpg-file>
image/jpeg

$ grep 'image/jpeg' -R /usr/share/applications/*
...
/usr/share/applications/mimeinfo.cache:image/jpeg2000=kde4-kolourpaint.desktop;gimp.desktop;

所以你可以看到 gimpjpg

的默认应用程序之一

关于linux - 如何获取可以在 Linux 中打开特定文件扩展名的程序列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30662334/

相关文章:

java - 如何在启动时将 Maven 作为守护进程或独立运行

linux - 错误 : Package requirements (libprotobuf-c >= 1. 0.1) 未满足

linux - 如何在自定义Linux(特别是树莓派)上添加启动屏幕

operating-system - DTS 文件说明 - 别名

embedded-linux - 为 Raspberry Pi 构建一个最小的 Linux

c - 如何获取内核中一个线程的运行时间?

linux - Influxdb 不要求身份验证

c - 将原始套接字绑定(bind)到特定地址

python - 使用Python统计所有文件夹/子文件夹中的所有文件

linux - 用于选择最新镜像的 U-Boot 脚本