Linux相当于Mac OS X的“打开”命令[关闭]


214

我发现Mac OS X中的“打开”命令在命令行中非常方便。从“人开”:

open命令将打开一个文件(或目录或URL),就像您双击该文件的图标一样。如果未指定应用程序名称,则使用通过LaunchServices确定的默认应用程序打开指定的文件。

也就是说,如果我想使用默认的PDF查看器(可能是“预览”)打开PDF文件,则只需执行以下操作:

open my.pdf

但是,在Linux中,要从命令行打开PDF文件,我不得不四处寻找以发现默认的PDF查看器是例如“ evince”(可能会猜到的?),然后

evince my.pdf

那么,Linux命令行中是否有与“ open”命令简单的等效项?

谢谢!


6
也许这个问题应该移到superuser.com上?
quazgar 2013年

1
超级用户似乎不合适-是否有“普通用户”或“想要为其他应用程序编写脚本的程序员”的StackOverflow,即自动化?
Krazy Glew'9

askubuntu可能适合。
Gopherkhan

Answers:


238

您可以尝试一下xdg-open,大多数Linux发行版都有它。它将为您的文件打开默认的关联应用程序。

仅供参考https://portland.freedesktop.org/doc/xdg-open.html


13
和的最大区别open是,这不会在后台打开文件/应用程序。Linux应用似乎很健谈,通常会在您的终端上直接输出多行诊断和警告(即使没有真正出错)。我通常不得不做类似的事情xdg-open <file> &> /dev/null &。在这方面,还有什么比xdg-open好吗?
Suan

13
@Suan:确实会在与终端分离的“后台”中打开应用程序,以这种方式,您可以在启动应用程序后立即在终端中继续工作。因此&不需要尾随 。至于“多行诊断”,这些来自应用程序本身,而不是来自xdg-open。如果您不想要任何输出,则&> /dev/null甚至需要evince直接使用(OP的示例),因此您的抱怨是无效的。xdg-open确实是要走的路。
MestreLion 2012年

15
@MestreLion我认为投诉不会完全无效,因为Mac的打开不会导致应用程序输出回显到终端。
Max Nanasy 2012年

7
@MaxNanasy:输出来自应用程序,xdg-open如果它们很健谈,这不是错误。禁止显示此类消息应该是用户的选择,而不是xdg的选择。因此,索要比“更好”的东西毫无用处xdg-open。此外,如果苹果公司open没有选项输出这些消息,我会说,open糟糕得多xdg-open,因为当你使用命令行启动文件,你在输出正在通常有兴趣(否则,为什么不直接双击该文件在像Nautilus这样的浏览器中?)
MestreLion,2012年

12
@MestreLion尽管可以说投诉很琐碎,但是由于alias open='xdg-open &>/dev/null'产生的行为大致令人满意(尽管xdg-open本身的错误(与仅启动的程序相对)也将被忽略,这是不希望的)。
Max Nanasy 2012年

76

您正在寻找的等效项是xdg-open,可以与OS X的open命令相同的方式使用。例如:

xdg-open ~/Documents/Chubby_Bubbies.odt

但是,这确实很难快速准确地键入。相反,您应该为xdg-open做一个别名,这样可以使过程更快。

当然,您可以对其进行别名化open以使其与OS X匹配(您可以选择任何想要的东西),但是]出于速度原因,我个人出于快捷方式使用右方括号()。要使用此功能,请将以下内容添加到您的.bashrc文件中:

alias ']'='xdg-open'

然后,要打开任何资源,请像以下任何示例一样使用它:

] www.google.com
] file.txt
] ~/Pictures
] ssh://myserver.local/home/jeremy

另外,这还允许您在当前目录中打开文件浏览器(例如Nautilus):

] .

根据经验,我发现单字母别名最适合上述快捷方式。毕竟,目标是效率。您可以返回并在OS X上使用相同的别名-我将其作为练习留给读者。:-)


26
我将别名从“ open”设置为“ xdg-open”,以使其在Linux和Mac上均保持一致。
亚当·伯瑞克

不错,但不是很好,我试图打开一个.url文件,并在gedit中将其打开。
索林2012年

18
@sorin您是否想让它听起来像是我的错?
杰里米·维瑟

7
@sorin:xdg-open打开文件的系统默认应用程序。在您的情况下,.url文件设置为在gedit中打开。如果要更改此设置,请在Nautilus中右键单击该文件,然后转至“属性”>“打开方式”以更改默认应用程序,xdg-open它将相应地工作。
MestreLion 2012年

这是我制作的要点,只需复制并粘贴第一条评论中“ Altogether”部分下的命令即可。
ozanmuyes

14

我自己整理了一下,以为我会写下我的工作方式,这与Suan的要求特别相关。这些步骤允许您只键入“ open”,而不用在不需要的消息中覆盖您的终端:

创建一个名为脚本open~/bin,内容就是:

xdg-open "$1" &> /dev/null &

保存并关闭脚本,然后键入“ source .profile”(或相关的.bash_profile)。就是这样,因此键入“打开音乐”将在nautilus GUI中打开您的音乐文件夹,并且不应在终端上输入任何内容。


别名和奇怪的位置是什么?只需调用脚本本身,open然后将其放入您的PATH(通常在中$HOME/bin/open
即可-Tripleee

在我的机器上(ubuntu 11.10),如果您在路径中添加了一个名为“ open”的脚本,并尝试通过/ bin / open覆盖它,则该方法将被覆盖。因此,我无法找到一种无需别名即可开始工作的方法。
Anake 2012年

关键是要有自己的脚本中,在你来早目录PATH/bin。按照惯例,如果有的$HOME/bin话,它将被添加到PATH的开头,在任何系统目录之前。通常,这是由您.profile或类似人员完成的。例如,.profileUbuntu上的默认设置完全可以做到这一点。
Tripleee

2
将输出重定向到/dev/null是有点反复无常的。也许您可以将输出重定向到$HOME/.xsession-errors或诸如此类,以便在您需要解决某些问题时不会完全丢失诊断信息。
Tripleee

1
@efdee:正确引用所有变量是一种良好的编程习惯,在bash脚本中至关重要。与此无关xdg-open,这是一个shell问题。
MestreLion 2012年

11

传统上,您可以使用“ see”命令。只是使用run-mailcap。这将在没有Gnome和X等的情况下工作。

man see

3
问题是run-mailcap(及其许多别名)使用了单独的(且过时的)应用程序关联数据库。例如,在我的系统中,虽然.mp3歌曲在VLC中正确打开,但是.txt文件打开的次数较少(而不是gedit),而.pdf文件只是无法打开!(错误:找不到类型为“ application / pdf”的“ view” mailcap规则)
MestreLion 2012年

如我所说,这取决于每个系统。很少有应用程序以run-mailcap识别它们的方式注册自己。xdg-open内部使用gvfs-open(在像Ubuntu这样的Gnome系统上),而后者又使用了xdg的mime-database规范,该规范使用了更多的应用程序。
MestreLion 2012年

gimp为我打开了50多页的PDF 。我会坚持的xdg-open
user1717828 17-10-23

lessx''D中打开txt文件
Timo


2

如果正确设置了哑剧,则可以使用mimeopen。查看它的手册页,因为它有一些有用的选项。


1
如果扩大这个答案,那就太好了。我很想看看它是如何工作
马格努斯

-3

在Gnome Desktop环境下,我使用以下命令:

nautilus `pwd` &

这类似于“打开”。Mac中的命令


11
这个答案有多个问题:A)根据用户要求,它打开当前目录,而不是文件。B)你可以使用.,而不是“ pwd” C,如果你改变)pwd的文件,用户仍然需要敲击回车键打开鹦鹉螺d)开幕后鹦鹉螺第一只为打开该文件是一个非常间接的解决方案。
MestreLion,2012年
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.