mod*_*tos 24 desktop-environment freedesktop mime-types files file-opening
命令行是否可以根据文件类型获取用于打开特定文件的推荐程序列表?例如,.pdf文件将具有open with...使用程序Evince和Document Viewer.
我在大多数情况下都使用命令行,但有时我会忘记我想用来打开特定类型文件的程序的名称。
顺便说一句,我正在使用 Ubuntu 13.10。
专家提示
感谢@slm 在下面选择了答案,我在名为 的文件中制作了以下 bash 脚本openwith.sh:
xdg-mime query default $(xdg-mime query filetype $1)
Run Code Online (Sandbox Code Playgroud)
添加为别名或直接作为openwith命令执行。
slm*_*slm 33
没有我见过的命令可以充当“打开方式...”,但您可以使用该命令xdg-open <file>打开<file>与该特定类型文件关联的应用程序中的给定文件。
打开一个文本文件:
$ xdg-open tstfile.txt
$
Run Code Online (Sandbox Code Playgroud)
导致文件tstfile.txt被打开gedit:

打开 LibreOffice Writer 文档:
$ xdg-open tstfile.odt
$
Run Code Online (Sandbox Code Playgroud)
导致tstfile.odt在 Writer 中打开文件:

您可以使用xdg-mime查询系统以找出与给定文件类型相关联的应用程序。
$ xdg-mime query default $(xdg-mime query filetype tstfile.txt)
gedit.desktop calibre-ebook-viewer.desktop
$ xdg-mime query default $(xdg-mime query filetype tstfile.odt)
libreoffice-writer.desktop calibre-ebook-viewer.desktop
Run Code Online (Sandbox Code Playgroud)
这是一个 2 步操作。首先,我要查询给定文件的 MIME 类型xdg-mime query filetype tstfile.txt,它将返回text/plain. 然后使用它来执行另一次查找以找出与此 MIME 类型关联的应用程序列表。正如你在上面看到的,我有 2 个关联的应用程序,gedit和calibre, 用于.txt文件。
您也可以使用xdg-mime来更改关联。有关man xdg-mime更多详细信息,请参阅。
有点,但它会因此更改您的默认应用程序。我不确定这适用于哪些其他操作系统,但以下说明适用于 Ubuntu 12.04 - Desktop X86-64。我手头没有任何 pdf 文件,所以我用 .zip 存档进行了测试。
在终端类型中:
$ mimeopen -d /home/username/example.zip
Run Code Online (Sandbox Code Playgroud)
屏幕截图 #1 = https://copy.com/qfWSZaZ4FzlA

通过输入#所需应用程序的 ,然后按 ,从列表中进行选择enter。该文件将立即在您选择的应用程序中打开。


这会将默认应用程序更改为您选择的应用程序,因此无论何时您打开该文件类型,它现在都会在您上次从列表中选择的任何应用程序中打开。
如果您主要在命令行上工作,则可以查看基于 curses 的文件管理器,例如ranger或vifm。两者都允许您为文件类型定义默认操作。
例如,在 vifm 中,~/.vifm/vifmrc您可以像这样定义关联:
" Images
filetype *.jpg,*.jpeg,*.gif,*.tif,*.png,*.bmp sxiv
" Media
filetype *.flv,*.avi,*.mp4,*.mpeg,*.mpg,*.mov,*.ogg,*.ogv,*.mkv mpv
" Web
filetype *.html,*.htm,*.shtml /home/jason/Scripts/vimprobtab.sh
" PDF
filetype *.pdf apvlvRun Code Online (Sandbox Code Playgroud)
Enter使用定义的操作之一在任何文件上点击光标将看到它被相关应用程序打开。正如您在.html文件的情况下所见,您可以触发脚本和应用程序。