我正在编写一个简单的文件管理器,并正在寻找不同文件类型的列表以及 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
笔记: export
yad
只是因为在对话框中双击时文件才会打开,所以才需要。我还需要帮助来弄清楚“魔法”数字以及如何解释它们。也许是一个教育链接?
编辑这不是重复的如何从命令行使用默认应用程序打开文件?因为:
- 这个问题是如何从命令行. 这个问题是如何从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 类型是inode
、model
和。multipart
x-content
林兹温德指出ogg123
Ubuntu 中没有默认的声音文件播放器。Ubuntu 中默认安装的适合播放声音文件的应用程序是canberra-gtk-play
2016 年 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