Есть ли способ открыть файл с программой по умолчанию, используя вместо этого командную строку?
Это работа для xdg-open
:
xdg-open открывает файл или URL в предпочтительном приложении пользователя. Если указан URL-адрес, он будет открыт в предпочтительном веб-браузере пользователя. Если файл предоставлен, файл будет открыт в предпочтительном приложении для файлов этого типа. xdg-open поддерживает URL-адреса файлов, ftp, http и https.
xdg-open предустановлен в Ubuntu.
В качестве альтернативы, есть ли способ, с учетом расширения файла, определить команду, чтобы открыть его?
По расширению нет. Приложение по умолчанию выбирается на основе типа MIME, а не расширения. У Linux нет «расширений».
Для конкретного файла вы можете использовать xdg-mime
для определения как MIME-типа файла, так и приложения по умолчанию, связанного с ним:
Синтаксис для отображения MIME-типа файла:
xdg-mime query filetype {file}
Синтаксис для отображения приложения по умолчанию типа MIME:
xdg-mime query default {mimetype}
Синтаксис для отображения файла приложения по умолчанию:
xdg-mime query default "$(xdg-mime query filetype {file})"
В качестве (хакерского) обходного пути вы можете использовать команду
xdg-mime query default \
`xdg-mime query filetype "$(find ~ / -iname '*.png' -print -quit)"`
для отображения приложения по умолчанию, например, для изображений PNG.
Это будет работать, если и только если у вас есть изображение PNG на вашем компьютере, и первый найденный файл, заканчивающийся на, .png
является действительным изображением PNG.