使用 Mac 上的 Bash 用默认浏览器打开一个. html 文件

所以,这就是我需要的:

假设我有一个 index.html文件。

如何告诉终端使用默认浏览器打开它?

(使用 AppleScript,BASH,... ?)

131161 次浏览

从包含 index.html 的目录中,尝试..。

open ./index.html

Open 命令打开一个文件(或目录或 URL)。Open 包含在 MacOSx 中。具体细节和选项可以使用

man open

注意: 默认应用程序通过 LaunchServices 确定。

实际上,这并不像看起来那么简单。正如其他答案所暗示的那样,OSX 提供了 open实用程序来从 shell 启动匹配文件类型的应用程序。然而,在 HTML 文件的情况下,这是应用程序注册的启动服务的 文件类型 public.html,这可以,但不一定是,您的默认浏览器(我认为它是在一个原始安装)-或任何编辑器注册为能够编辑 HTML (并不罕见的发生在开发系统)。虽然默认浏览器是为 URL 协议 http注册的,但是无论如何,都无法访问该协议处理程序来用 open打开文件。

为了解决这个问题,虽然处理程序存储在通过 defaults命令可以访问的 com.apple.LaunchServices.plist首选项中,但是信息的结构(一个字典有两个相同级别的条目,一个表示协议,一个表示处理程序)使得用 defaults解析变得非常重要。

好消息是有人已经解决了这个问题: HAMsoft Engineering 提供了 默认应用程序 shell 实用程序。并将它保存在 shell 可以访问的地方(通常是 /usr/local/bin,尽管在某些 OS X 版本的 shell 中没有默认路径——请检查 /etc/paths的内容以确保这一点)。如果可用,下面的命令将在默认浏览器中打开一个 HTML 文件,不管注册了什么编辑器/查看器:

open -a "$(/usr/local/bin/DefaultApplication -url 'http:')" "/path/to/your/document.html"

你也可以 使用 Perl 获取默认浏览器: open http://example.com -a "$(VERSIONER_PERL_PREFER_32_BIT=true perl -MMac::InternetConfig -le 'print +(GetICHelper "http")[1]')"

您可以使用带-a 标志的 open 命令在 Chrome (或任何目标应用程序)中打开一个文件或位置:

open -a "Google Chrome" index.html

这也适用于 URL,即打开一个“ Google Chrome”http://www.apple.com

多亏了用户“ robmathers”,我找到了这个答案:@堆栈交换

我设法用 chrome 打开 html 文件,把文件放在浏览器命令之后,

google-chrome-stable ./index.html

虽然我不确定默认浏览器的调用是什么,但如果你知道它,你可以把它作为一个别名放在你的。从那时起,使用你所谓的别名,加上文件。

goo ./index.html

根据我的经验,第一反应

在终端你可以运行打开的 index.html

要在默认浏览器中打开 filename.html,请使用:

open filename.html

Open 是一个非常好的命令,也是 Mac OS 的一个特性,它让我更加喜欢它。 它会自动选择适当的默认应用程序来打开文件。

如果你想在你想要的应用程序中打开一个文件而不是默认的话:

open -a /Applications/Google\ Chrome.app filename.html

Google 后面的反斜杠 \用于转义空格字符。

或者你可以写:

open -a "/Applications/Google Chrome.app" filename.html

希望这对你(我知道我迟到了)和其他人有所帮助! ! 。

这可以在 linux 上运行,也可以在 mac 上运行

#!/bin/sh


# open a html file in default browser, not text editor,
# when text editor is set as default app for html files


url=file:///path/to/file.html


protocol=http


app=$(xdg-mime query default x-scheme-handler/$protocol)
# example: chromium-browser.desktop


[ -z "$app" ] && {
echo "error: xdg-mime could not find default app for protocol $protocol"
exit 1
}


app=$(basename $app .desktop)


gtk-launch $app "$url"

理想情况下,我只能说

xdg-open http+file:///path/to/file.html

但这样不行