How to open file with default program from command line?
If I click on a file in a GUI file explorer, a default program is used to open it. This is useful for files which I don't know how to open from the command line.
Is there a way to open a file with the default program using command-line instead?
Alternatively, is there a way, given a file extension, to determine a command to open it?
Is there a way to open a file with the default program using command-line instead?
This is a job for xdg-open
:
xdg-open opens a file or URL in the user's preferred application. If a URL is provided the URL will be opened in the user's preferred web browser. If a file is provided the file will be opened in the preferred application for files of that type. xdg-open supports file, ftp, http and https URLs.
-
Syntax for opening a file with it's default application:
xdg-open {file}
xdg-open comes pre-installed in Ubuntu.
Alternatively, is there a way, given a file extension, to determine a command to open it?
By the extension, no. The default application is chosen based upon the MIME type, not the extension. Linux does not have "extensions".
For a specific file, you can use xdg-mime
to determine both the file's MIME type and the default application associated to it:
-
Syntax for displaying a file's MIME type:
xdg-mime query filetype {file}
-
Syntax for displaying MIME type's default application:
xdg-mime query default {mimetype}
-
Syntax for displaying a file's default application:
xdg-mime query default "$(xdg-mime query filetype {file})"
As a (hacky) workaround you could use the command
xdg-mime query default \
`xdg-mime query filetype "$(find ~ / -iname '*.png' -print -quit)"`
to display the default application for, e.g., PNG images.
This will work if and only if you have a PNG image on your computer and the first found file ending with .png
is a valid PNG image.