Como obter programaticamente um programa associado a uma determinada extensão de arquivo?

Como obter programaticamente um programa associado a uma determinada extensão de arquivo?

Como posso, sem qualquer uso manual da GUI, verificar o que abrirá o arquivo com uma extensão de arquivo específica - por exemplo .rb?

Não é uma duplicata decomo posso alterar a associação de arquivos globalmente?como o meu é sobre leitura programática, sem mudar de forma alguma, incluindo manual por meio de GUI (emborahttps://askubuntu.com/a/289339/349903sugere que a análise de algum conjunto de arquivos de configuração pode fornecer uma resposta)

Para evitar problemas XY: Eu tenho um script de instalação do sistema, que funciona bem , exceto que o Okular termina associado a .rb, e outros arquivos de texto, em vez do editor de texto. Quero executar novamente o script de instalação e registrar o que agora está abrindo extensões de arquivo específicas após cada etapa. Espero que isso me permita depurar o que está errado..py.txt

Responder1

Para resumir os comentários acima, a resposta a este problema é um processo de duas etapas:

Primeiro determine o tipo MIME do arquivo:

MIMETYPE=$(xdg-mime query filetype "<your-file-here>")

Em seguida, obtenha o aplicativo padrão associado a este tipo:

xdg-mime query default "$MIMETYPE"

Então o tipo mime poderia sertexto/x-pythonpor exemplo e a aplicação seriagedit.desktopno meu sistema.

Você também pode fazer disso uma linha única:

xdg-mime query default "$(xdg-mime query filetype '<your-file-here>')"

informação relacionada