¿Cómo obtener mediante programación un programa asociado con una extensión de archivo determinada?

¿Cómo obtener mediante programación un programa asociado con una extensión de archivo determinada?

¿Cómo puedo, sin ningún uso manual de GUI, verificar qué se abrirá un archivo con una extensión de archivo específica, por ejemplo .rb?

No es un duplicado de¿Cómo puedo cambiar la asociación de archivos globalmente?como el mío, se trata de leer mediante programación, sin cambiar de ninguna manera, incluido el manual a través de GUI (aunquehttps://askubuntu.com/a/289339/349903sugerencias de que analizar algún conjunto de archivos de configuración puede dar una respuesta)

Para evitar el problema XY: tengo un script de instalación del sistema que funciona bien, excepto que Okular termina asociado con , .rby otros archivos de texto, en lugar del editor de texto. Quiero volver a ejecutar el script de instalación y registrar lo que ahora abre extensiones de archivo específicas después de cada paso. Espero que eso me permita depurar lo que va mal..py.txt

Respuesta1

Para resumir los comentarios anteriores, la respuesta a este problema es un proceso de dos pasos:

Primero determine el tipo MIME del archivo:

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

Luego obtenga la aplicación predeterminada asociada con este tipo:

xdg-mime query default "$MIMETYPE"

Entonces el tipo mimo podría sertexto/x-pythonpor ejemplo y la aplicación seríagedit.desktopen mi sistema.

También puedes hacer que esto sea de una sola línea:

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

información relacionada