文件类型和默认打开的 Ubuntu 应用程序列表

文件类型和默认打开的 Ubuntu 应用程序列表

我正在编写一个简单的文件管理器,并正在寻找不同文件类型的列表以及 Ubuntu 用来打开它们的默认应用程序。

到目前为止,我只知道用 打开“文本” gedit,用 (eye-of-gnome) 打开“图像” eog,用 打开“音频” ogg123。但我不确定这是否ogg123是默认应用程序。

如果您能帮我扩展以下代码中的列表,我将非常感激:

function OpenFileWithMagic () {

local FileType
FileType=$(file -i "$DfName/$2" | grep -oP '(?<=: ).*?(?=/)')
logger "bafman - OpenFileWithMagic - FileType: $FileType DfName: - $DfName parm 1: $1 2: $2 3: $3 4: $4"

case $FileType in

text)
    # TODO: expand list of file types and associated applications to open them with
    if [[ $4 == root ]]; then
        gsu gedit $DfName/$2
    else
        gedit $DfName/$2
    fi ;;
image)
    eog $DfName/$2 ;;
audio)
    ogg123 $DfName/$2 ;;
esac

} ### OpenFileWithMagic ()
export -f OpenFileWithMagic

笔记: exportyad只是因为在对话框中双击时文件才会打开,所以才需要。我还需要帮助来弄清楚“魔法”数字以及如何解释它们。也许是一个教育链接?


编辑这不是重复的如何从命令行使用默认应用程序打开文件?因为:

  • 这个问题是如何从命令行. 这个问题是如何从bash 脚本在一个case结构内。
  • 那里的答案会导致rhythembox用于不想要的声音文件。ogg123更适合播放声音而无需打开新窗口并使用 python 错误消息关闭。
  • 那里的答案将xdg-open /bin/mv导致:

    gvfs-open: /bin/mv: error opening location: No application is registered as handling this file
    
  • 使用上述 bash 脚本,file -i /bin/mv命令结果为:

    /bin/mv: application/x-executable; charset=binary
    

在 Bash 脚本中过滤掉所有所需文件类型的处理之后,剩余部分可以传递给xdg-open重复候选文件。


回复评论正如DK 博斯主要文件类型可以在 中找到/usr/share/mime/types。这里还有其他类型需要考虑,例如Video(需要获取合适的默认 Ubuntu 视频播放器)、Application(而不是运行它,需要显示有关应用程序的信息)和Message(我不知道如何显示它)。需要进一步研究的其他 mime 类型是inodemodel和。multipartx-content

林兹温德指出ogg123Ubuntu 中没有默认的声音文件播放器。Ubuntu 中默认安装的适合播放声音文件的应用程序是canberra-gtk-play2016 年 10 月 5 日的回答温德雷亚在此问答中:可以将线绘字符(或颜色)添加到 Bash 文件列表菜单吗?

答案1

大多数现代桌面程序不使用file,但共享 MIME 信息数据库对于文件类型和MIME 应用程序协会规范对于默认应用程序。

在 Bash 中你可以使用xdg-mime猜测文件的 MIME 类型并获取给定 MIME 类型的默认应用程序:

$ xdg-mime query filetype bla.sh
application/x-shellscript
$ xdg-mime query default application/x-shellscript
emacs.desktop

xdg-开放您可以使用默认应用程序打开文件,因此您实际上不需要自己关心 MIME 类型:

$ xdg-open bla.sh

相关内容