命令行是否有办法根据文件类型获取用于打开特定文件的推荐程序列表?例如,.pdf
文件将包含open with...
使用程序Evince
和 的建议Document Viewer
。
我在大多数情况下都使用命令行,但有时我会忘记要用来打开特定类型文件的程序的名称。
顺便说一句,我使用的是 Ubuntu 13.10。
专家提示
感谢@slm 在下面选择的答案,我在一个名为 的文件中制作了以下 bash 脚本openwith.sh
:
xdg-mime query default $(xdg-mime query filetype $1)
添加为别名或直接作为openwith
命令执行。
答案1
我见过没有一个命令可以充当“打开方式...”,但您可以使用该命令xdg-open <file>
打开<file>
应用程序中与该特定类型的文件关联的给定命令。
例子
打开文本文件:
$ xdg-open tstfile.txt
$
导致文件tstfile.txt
被打开gedit
:
打开 LibreOffice Writer 文档:
$ xdg-open tstfile.odt
$
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
这是一个两步操作。首先,我查询给定文件的 mime 类型,xdg-mime query filetype tstfile.txt
它将返回text/plain
。然后,它用于执行另一次查找,以找出与此 mime 类型关联的应用程序列表。正如您在上面看到的,我有 2 个关联的应用程序,gedit
并且calibre
,用于.txt
文件。
您xdg-mime
也可以用来更改关联。请参阅man xdg-mime
了解更多详情。
答案2
如果您主要在命令行上工作,您可以查看基于curses的文件管理器,例如护林员或者维夫姆。两者都允许您定义文件类型的默认操作。
例如,在 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 apvlv
使用定义的操作之一将Enter光标放在任何文件上将看到该文件被相关应用程序打开。正如您在文件中看到的那样.html
,您可以触发脚本以及应用程序。
答案3
有点像,但它会因此改变你的默认应用程序。我不确定这适用于哪些其他操作系统,但以下说明适用于 Ubuntu 12.04 - Desktop X86-64。我手头没有任何 pdf 文件,因此我使用 .zip 存档进行了测试。
一般步骤
步骤1在终端类型中:
$ mimeopen -d /home/username/example.zip
屏幕截图#1 =https://copy.com/qfWSZaZ4FzlA
第2步
#
输入所需应用程序的 并按 ,从列表中进行选择enter。该文件将立即在您选择的应用程序中打开。
截图 #3 =https://copy.com/ytwKCqR6nv8i
笔记
注意#1这会将默认应用程序更改为您选择的应用程序,因此每当您打开该文件类型时,它现在都会在您最后从列表中选择的任何应用程序中打开。
答案4
我猜这取决于你使用的 Unix 风格。在 OS X 中,您可以使用以下open
命令:
OPEN(1) BSD General Commands Manual OPEN(1)
NAME
open -- open files and directories
SYNOPSIS
open [-e] [-t] [-f] [-F] [-W] [-R] [-n] [-g] [-h] [-b bundle_identifier]
[-a application] file ... [--args arg1 ...]
DESCRIPTION
The open command opens a file (or a directory or URL), just as if you had
double-clicked the file's icon. If no application name is specified, the
default application as determined via LaunchServices is used to open the
specified files.
If the file is in the form of a URL, the file will be opened as a URL.
...