命令行是否有“打开方式”命令?


24

命令行是否可以根据文件类型获取用于打开特定文件的推荐程序列表?例如,.pdf文件将有一个open with...使用程序的建议EvinceDocument Viewer

我在大多数情况下都使用命令行,但是有时我忘记了要用来打开特定类型文件的程序的名称。

顺便说一句,我正在使用Ubuntu 13.10。

专家提示

感谢以下@slm的选择答案,我在名为的文件中制作了以下bash脚本openwith.sh

xdg-mime query default $(xdg-mime query filetype $1)

添加为别名或直接作为openwith命令执行。


1
您可以尝试使用gnome-open file。为了简单起见alias o='gnome-open',我添加了我.bashrc的内容。
帕尔GD

gnome-open的工作与xdg-open
slm

显然,也是如此gvfs-open。问题我可以使用什么代替gnome-open?问ubuntu
帕尔GD

Answers:


33

我从未见过一个命令可以用作“用...打开”的命令xdg-open <file>,但是您可以使用该命令<file>在与该特定类型的文件相关联的应用程序中打开一个给定的命令。

例子

打开一个文本文件:

$ xdg-open tstfile.txt
$

结果在tstfile.txt中打开文件gedit

                         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个与关联的应用,分别是geditcalibre,用于.txt文件。

您也可以xdg-mime用来更改关联。请参阅man xdg-mime以获取更多详细信息。


除了默认程序外,是否有其他方法可以显示其他程序?例如,我刚刚安装okular以查看PDF,但是上面的示例仅evince在对.pdf文件运行时显示。
modulitos

1
@Lucas-是的,我显示的示例显示了与上述给定文件类型关联的应用程序。对于前。例如,文件类型.txt与gedit和口径相关。
slm

我是否需要.desktop列出要列出的程序的文件?例如,当我在.pdf文件上运行脚本时evince.desktop,即使我也可以运行,它也会返回okular
modulitos

@Lucas-最好将其作为新的Q,因为我们现在正在偏离原始的Q。
slm

5

如果您主要在命令行上工作,则可以查看基于curses的文件管理器,例如rangervifm。两者都允许您定义文件类型的默认操作。

例如,在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文件中看到的那样,您可以触发脚本以及应用程序。


5

有点,但是这样会改变您的默认应用程序。我不确定可以在其他操作系统上运行,但是以下说明适用于Ubuntu 12.04-Desktop X86-64。我没有任何方便的pdf文件,因此我使用.zip存档进行了测试。

一般步骤

步骤1

在终端中输入:

$ mimeopen -d /home/username/example.zip
屏幕截图#1 = https://copy.com/qfWSZaZ4FzlA

    SS#1

第2步

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

屏幕截图#2 = https://copy.com/um6Rf7zRdceT

    SS#2

屏幕截图#3 = https://copy.com/ytwKCqR6nv8i

    SS#3

笔记

注意#1

这会将默认应用程序更改为您选择的默认应用程序,因此,无论何时打开该文件类型,它都将在您从列表中最后选择的任何应用程序中打开。


您是不是要在截图3的网址中添加井号(#)?
trysis 2014年

@trysis我只是用它绕过了最多2个网址的限制。
请删除我

哦,有道理。不过看起来还是很奇怪。
trysis

我清理了您A并为您添加了第三个URL。
slm

2

我想这取决于您使用的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.

...

同样,该open命令首先出现在NextStep中,并已由OS X继承,因此它可能以某种形式在其他或多或少基于OpenStep的平台(例如AfterStep,LiteStep)上可用。
Ionoclast Brigham 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.