¿Hay alguna manera de abrir un archivo con el programa predeterminado usando la línea de comandos?
Este es un trabajo para xdg-open
:
xdg-open abre un archivo o URL en la aplicación preferida del usuario. Si se proporciona una URL, la URL se abrirá en el navegador web preferido del usuario. Si se proporciona un archivo, el archivo se abrirá en la aplicación preferida para archivos de ese tipo. xdg-open admite archivos, ftp, http y https URL.
xdg-open viene preinstalado en Ubuntu.
Alternativamente, ¿hay alguna forma, dada una extensión de archivo, para determinar un comando para abrirlo?
Por la extensión, no. La aplicación predeterminada se elige según el tipo MIME, no la extensión. Linux no tiene "extensiones".
Para un archivo específico, puede usar xdg-mime
para determinar tanto el tipo MIME del archivo como la aplicación predeterminada asociada a él:
Sintaxis para mostrar el tipo MIME de un archivo:
xdg-mime query filetype {file}
Sintaxis para mostrar la aplicación predeterminada del tipo MIME:
xdg-mime query default {mimetype}
Sintaxis para mostrar la aplicación predeterminada de un archivo:
xdg-mime query default "$(xdg-mime query filetype {file})"
Como solución alternativa (hacky), puede usar el comando
xdg-mime query default \
`xdg-mime query filetype "$(find ~ / -iname '*.png' -print -quit)"`
para mostrar la aplicación predeterminada para, por ejemplo, imágenes PNG.
Esto funcionará si y solo si tiene una imagen PNG en su computadora y el primer archivo encontrado que termina con .png
una imagen PNG válida.