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
没有输出这些消息的选项,我会说 open
比 xdg-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
。
在less
x''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”