根据文件扩展名查找可执行文件的脚本?

根据文件扩展名查找可执行文件的脚本?

我需要创建一个脚本,返回用于给定文件扩展名(包括路径)的默认应用程序。我查看了file可以返回 mime 类型并xdg-open可以打开文件的命令。但我想要得到的是

myscript doc

/usr/bin/libreoffice

。或者。

myscript fun

/opt/acme/roadrunner/meepmeep

我怎么做?

答案1

我找了一位办公室的 Linux 专家,我们找到了一个合理的解决方案:

#!/bin/bash
EXTENSION=$1
SAMPLENAME=$HOME/~webdavhelpersample.$EXTENSION
touch $SAMPLENAME
CURMINE=$(xdg-mime query filetype $SAMPLENAME)
rm $SAMPLENAME
CURDSK=$(xdg-mime query default $CURMINE)

if [ -f /.local/share/applications/$CURDSK ]; then
    TRUEDSK=/.local/share/applications/$CURDSK
elif [ -f /usr/local/share/applications/$CURDSK ]; then
    TRUEDSK=/usr/local/share/applications/$CURDSK
elif [ -f  /usr/share/applications/$CURDSK ]; then
    TRUEDSK=/usr/share/applications/$CURDSK
else 
    echo "Sorry no executable found for $1"
    exit 1
fi

WHATTODO=$(grep "^Exec" $TRUEDSK | head -1)
echo $WHATTODO

一旦我们意识到只有3 个地点对于桌面文件来说,这不再困难了。

答案2

该命令可以是类似这样的:

xdg-mime query default `xdg-mime query filetype example.odp` 

结果:

libreoffice-impress.desktop

相关内容