2

这可能不是严格意义上的编程,但如果我找不到现成的解决方案,它可能会成为一项编程任务: 在 UNIX 上,确定给定文件类型的用户首选应用程序的命令行方法是什么?

我在这里理想的解决方案是一个命令,让我不必执行以下操作:

okular foo.pdf

并允许我做这样的事情,使用我设置的首选应用程序:

launch foo.pdf

我通过搜索没有找到答案,而且 DIY 方法也行不通,因为虽然我已经使用 Linux 一段时间了,但我对管理我喜欢的应用程序的内部结构一无所知。

4

3 回答 3

5

在 unix本身上,这将是用户用来打开它的那个,因为没有操作系统级别的首选应用程序概念。

然而,主要的 X 桌面环境都定义了这样一个概念,然后你必须使用它们的工具:

  • gnome-open在 GNOME 中(呃)
  • exo-open在 XFCE [查看 gnome 链接中的评论]
  • xdg-open可以在许多环境中工作(据说在 KDE 中工作)[参见 gnome 链接中的评论]
  • 只是简单的kfmclient exec(或kfmclient4 exec)在 KDE 中(我无法找到Rob H 建议kde-open的引用,并且手头没有 KDE 系统来尝试它)

现在 Mac OS X 提供了open类似于在查找器中单击文件的命令(也就是说,它询问操作系统...)


感谢评论中的ehemient的一些更正。我不会讨论mailcap,因为我从来不理解它,并且忘记了它的存在......

于 2009-12-22T22:40:30.843 回答
1

答案因您使用的桌面环境而异。既然您提到了 Okular,我将假设您使用的是 KDE。所以试试:

kde-open <file>

对于 GNOME,有等价的:

gnome-open <file>
于 2009-12-22T22:52:41.473 回答
0

为了自己回答这个问题,我定义了一个简单的(bash)函数,它以我期望的方式工作:

function show { 
    xdg-open $1 &> NUL
    }

xdg-open 几乎正是我想要的,但它让丑陋的程序警告溜进了外壳,上面似乎解决了这个问题。

谢谢大家。

于 2009-12-23T09:54:20.790 回答