基本上我正在尝试获取已安装的Linux程序列表,例如可以打开特定文件扩展名.jpg
。如果不是全部,至少应该列出默认程序。
答案 0 :(得分:2)
Linux(内核)对应用程序映射的文件类型一无所知。如果你想使用gnome progs,你可以查看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 /共享/应用/ *。桌面
在这里,您可以在每个桌面文件中找到为应用程序注册的一些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>
returns: mage/jpeg
grep 'image/jpeg' -R /usr/share/applications/*
returns:
...
/usr/share/applications/mimeinfo.cache:image/jpeg2000=kde4-kolourpaint.desktop;gimp.desktop;
所以你可以看到gimp
是'jpg'的默认应用程序之一
答案 1 :(得分:0)
开始查看的地方位于mailcap(/etc/mailcap
)和MIME-types,例如,在Debian的/etc/mime.types
中(文件名和路径会因人而异)提供它。)
mailcap文件提供了打开文件的一些规则,而MIME类型列出了已知的文件类型,其标签允许多个应用程序了解文件类型。
除了嵌入式或简化功能系统(例如基于busybox的系统)之外,您几乎可以在每个类UNIX系统上找到这些文件。