Existe uma maneira de abrir um arquivo com o programa padrão usando a linha de comando?
Este é um trabalho para xdg-open
:
O xdg-open abre um arquivo ou URL no aplicativo preferido do usuário. Se um URL for fornecido, o URL será aberto no navegador da web preferido do usuário. Se um arquivo for fornecido, o arquivo será aberto no aplicativo preferido para arquivos desse tipo. O xdg-open suporta URLs de arquivo, ftp, http e https.
O xdg-open vem pré-instalado no Ubuntu.
Como alternativa, existe uma maneira, dada uma extensão de arquivo, de determinar um comando para abri-lo?
Pela extensão, não. O aplicativo padrão é escolhido com base no tipo MIME, não na extensão. O Linux não possui "extensões".
Para um arquivo específico, você pode usar xdg-mime
para determinar o tipo MIME do arquivo e o aplicativo padrão associado a ele:
Sintaxe para exibir o tipo MIME de um arquivo:
xdg-mime query filetype {file}
Sintaxe para exibir o aplicativo padrão do tipo MIME:
xdg-mime query default {mimetype}
Sintaxe para exibir o aplicativo padrão de um arquivo:
xdg-mime query default "$(xdg-mime query filetype {file})"
Como solução alternativa (hacky), você pode usar o comando
xdg-mime query default \
`xdg-mime query filetype "$(find ~ / -iname '*.png' -print -quit)"`
para exibir o aplicativo padrão para, por exemplo, imagens PNG.
Isso funcionará se, e somente se, você tiver uma imagem PNG no computador e o primeiro arquivo encontrado terminar com .png
uma imagem PNG válida.