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

Posted

技术标签:

【中文标题】Linux相当于Mac OS X“打开”命令[关闭]【英文标题】:Linux equivalent of the Mac OS X "open" command [closed] 【发布时间】:2010-09-20 20:00:22 【问题描述】:

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

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

也就是说,如果我想用默认的PDF查看器(恰好是预览)打开一个PDF文件,我只需要这样做:

open my.pdf

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

evince my.pdf

那么,在 Linux 命令行中是否有一个与“打开”命令等效的简单命令?

谢谢!

【问题讨论】:

也许这个问题应该移到 superuser.com 上? 超级用户似乎不合适 - 是否有适用于“普通用户”或可能“想要编写其他应用程序脚本的程序员”的 ***,即自动化? askubuntu 可能适合。 【参考方案1】:

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

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

【讨论】:

这与open 之间的一个很大区别是,它不会在后台打开文件/应用程序。 Linux 应用程序似乎非常健谈,并且经常将多行诊断和警告输出到您的终端(即使没有真正出错)。我通常不得不做类似xdg-open <file> &> /dev/null & 的事情。在这方面有什么比 xdg-open 更好的吗? @Suan:它确实会在“后台”中打开应用程序,与终端分离,这样您就可以在应用程序启动后继续在终端中工作。所以不需要尾随的&。至于“多行诊断”,这些来自应用程序本身,而不是来自xdg-open。如果您不想要任何输出,即使直接使用evince(OP 的示例),您也需要&> /dev/null,因此您的投诉无效。 xdg-open 确实是要走的路。 @MestreLion 我不认为投诉完全无效,因为 Mac 的打开不会导致应用程序输出回显到终端。 @MaxNanasy:输出来自应用程序,如果 他们 很健谈,这不是 xdg-open 的错。并且抑制此类消息应该是用户的选择,而不是 xdg 的选择。因此,要求比xdg-open“更好”的东西是徒劳的抱怨。此外,如果 Mac 的 open 没有输出这些消息的选项,我会说 openxdg-open差很多,因为当您使用命令行启动文件时通常对该输出感兴趣(否则,为什么不在 Nautilus 之类的浏览器中简单地双击文件?) @MestreLion 尽管人们可以认为投诉是微不足道的,因为alias open='xdg-open &>/dev/null' 产生了大约所需的行为(尽管来自 xdg-open 本身的错误(而不仅仅是启动的程序)也会保持沉默,这是不可取的)。【参考方案2】:

侏儒打开

【讨论】:

gnome-open 现在已弃用,此外,如果用户在 Gnome 上,xdg-open 已经在内部使用它(现在它使用 gvfs-open【参考方案3】:

您正在寻找的等价物是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 上使用相同的别名——我将其留给读者作为练习。 :-)

【讨论】:

我将别名从“open”改为“xdg-open”,以便在 Linux 和 Mac 上保持一致。 这很好但不是很好,我尝试打开一个 .url 文件并在 gedit 中打开它。 @sorin : xdg-open 打开系统默认的文件应用程序。在您的情况下,.url 文件设置为在 gedit 中打开。如果您想更改它,请右键单击 Nautilus 中的文件,然后转到“属性”>“打开方式”以更改默认应用程序,xdg-open 将相应地工作。 Here is a Gist 我已经做了,只需复制粘贴并在第一条评论的“总共”部分下执行命令。 ?? 给胖胖的泡泡!大声笑漂亮的别名@ozanmuyes 很酷的脚本,我ported to zsh,有一个小错误,但它没有破坏任何东西,工作。【参考方案4】:

传统上,您可以使用“see”命令。它只使用运行邮件帽。这将在没有 Gnome 和 X 等的情况下工作。

man see

【讨论】:

问题是run-mailcap(和它的许多别名)使用了一个单独的(并且非常过时的)应用程序关联数据库。例如在我的系统中,.mp3 歌曲在 VLC 中正确打开,.txt 文件在 less(而不是 gedit)中打开,.pdf 文件根本无法打开! (错误:找不到类型“application/pdf”的“查看”邮件封盖规则) 正如我所说,这取决于每个系统。很少有应用程序以run-mailcap 识别它们的方式注册自己。 xdg-open 内部使用 gvfs-open(在 Ubuntu 等 Gnome 系统上),而后者又使用 xdg 的 mime-database 规范,更多应用程序使用该规范。 gimp 中为我打开了一个 50 多页的 PDF。我会坚持xdg-open lessx''D中打开txt文件【参考方案5】:

我只是自己解决了这个问题,所以我想我会写下我是如何做到的,这与 Suan 的问题特别相关。 这些步骤让您只需键入“open”,而不是您的终端包含您不需要的消息:

~/bin中创建一个叫open的脚本,内容就是:

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

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

【讨论】:

别名和奇怪的位置是怎么回事?只需调用脚本本身 open 并将其放入您的 PATH 中(通常在 $HOME/bin/open 中) 在我的机器 (ubuntu 11.10) 上,如果您在路径中添加一个名为“open”的脚本,并尝试这样做,它会被 /bin/open 覆盖。所以我无法找到一种方法让你在没有别名的情况下工作。 诀窍是在PATH/bin 更早的目录中拥有自己的脚本。按照惯例,如果您有 $HOME/bin,它将被添加到 PATH 的开头,在任何系统目录之前。通常,这是由您的 .profile 或类似人员完成的。例如,Ubuntu 上的默认 .profile 就是这样做的。 将输出重定向到/dev/null 有点反复无常;也许您可以将输出重定向到 $HOME/.xsession-errors 或类似的,以便在您需要排除故障时不会完全丢失诊断信息。 @efdee:正确引用 all 变量是一种良好的编程习惯,在 bash 脚本中至关重要。这与xdg-open无关,这是一个shell问题。【参考方案6】:

在 Gnome 桌面环境下,我使用如下命令:

nautilus `pwd` &

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

【讨论】:

这个答案有多个问题:A)它按照用户的要求打开当前目录,而不是文件。 B)您可以使用. 而不是“pwd” C)如果您更改文件的pwd,用户仍然需要在 Nautilus 打开后按 ENTER D)首先打开 nautilus 只是为了 it i> 打开文件是一个非常间接的解决方案。【参考方案7】:

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

【讨论】:

如果这个答案被扩展会很好。我很想看看这是如何工作的

以上是关于Linux相当于Mac OS X“打开”命令[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Mac OS X 11中的/usr/bin 的“Operation not permitted”

苹果Mac OS X显示隐藏文件的方法

Mac OS X 配置 Apache+Mysql+PHP 详细教程

Mac OS X NTP 服务开启与关闭

在 Mac OS X 上使用现代 OpenGL [关闭]

Linux/Mac OS 在终端使用 code 命令打开项目 VSCode