我需要创建一个脚本,返回用于给定文件扩展名(包括路径)的默认应用程序。我查看了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