【问题标题】:Open an .html file with default browser using Bash on Mac在 Mac 上使用 Bash 使用默认浏览器打开 .html 文件
【发布时间】:2012-04-17 21:58:14
【问题描述】:

所以,这就是我需要的:

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

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

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

【问题讨论】:

    标签: html macos bash browser applescript


    【解决方案1】:

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

    open ./index.html
    

    open 命令打开一个文件(或目录,或 URL)。 open 包含在 MacOSx 中。可以使用

    找到细节和选项
    man open
    

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

    【讨论】:

    • 这将在默认的编辑器或查看器中打开HTML文件,不保证是浏览器。请参阅my answer 了解无论如何都有效的解决方案。
    • 这是最简单的答案,也是正确的,以防有人偶然发现。
    【解决方案2】:

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

    open -a "Google Chrome" index.html

    这也适用于 URL,即 open -a "Google Chrome" http://www.apple.com

    --->我找到了这个答案@stack exchange,感谢用户“robmathers”

    【讨论】:

    • 要求使用Default browser,所以指定谷歌浏览器不符合要求。
    【解决方案3】:

    实际上,这并不像看起来那么简单。正如其他答案所建议的那样,OS X 提供了 open 实用程序来启动与 shell 中的文件类型匹配的应用程序。但是,对于 HTML 文件,即向 Launch Services 注册的应用程序,其文件类型为public.html,它可以但不一定是您的默认浏览器(我认为它是原始安装)——或任何注册为能够编辑 HTML 的编辑器(在开发系统上并不罕见)。虽然默认浏览器注册了 URL 协议 http,但无论如何都无法访问该协议处理程序以使用 open 打开文件。

    为了使问题复杂化,尽管处理程序存储在可通过defaults 命令访问的com.apple.LaunchServices.plist 首选项中,但信息的结构(具有两个相同级别条目的字典,一个表示协议,一个表示处理程序)使用defaults 解析变得不简单。

    好消息是有人已经解决了这个问题:HAMsoft Engineering 提供了 DefaultApplication shell 实用程序。 Download it 并将其保存在 shell 可以访问的位置(通常是 /usr/local/bin,尽管在某些 OS X 版本上,这不在 shell 的默认路径中 - 请检查 /etc/paths 的内容以确定)。可用的,以下命令将在默认浏览器中打开一个 HTML 文件,否则可能会注册任何编辑器/查看器:

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

    【讨论】:

    • 非常好的解决方案。简单地将file:/// 放在路径前面有什么问题?
    • @QZSupport 你应该问很有趣,因为这是我开始回答这个问题时的第一个想法,但是有两个绊脚石:1. 需要 URL 编码来处理文件名中的空格和2. 不适用于具有smb:afp: 等网络协议的文件路径。
    【解决方案4】:

    你也可以get the default browser with Perl:open http://example.com -a "$(VERSIONER_PERL_PREFER_32_BIT=true perl -MMac::InternetConfig -le 'print +(GetICHelper "http")[1]')"

    【讨论】:

      【解决方案5】:

      在终端中你可以运行 open index.html

      【讨论】:

        【解决方案6】:

        通过将文件放在浏览器命令之后,我设法用 chrome 打开了 html 文件。所以,

        google-chrome-stable ./index.html
        

        虽然我不确定对默认浏览器的调用是什么,但如果你知道它,你可以将它作为别名放在你的 .bashrc 中,从那时起,使用你称之为别名的任何东西,加上文件。

        goo ./index.html
        

        只是我的经验,第一反应

        【讨论】:

          【解决方案7】:

          要在默认浏览器中打开 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
          

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

          【讨论】:

          • 这已在其他答案中显示。请不要添加只是重复其他答案内容的新答案。
          • 老实说,我没有在下面提到任何内容。如果你有这样的感觉,我很抱歉。我是终端的一致用户,并且我已经知道上述命令,因此复制答案没有意义。希望你平安健康。 #StayHomeStaySafe
          • @wim 还有你能指出谁用反斜杠转义写了代码吗?被使用,那么它们必然是相似的。重要的是您最了解哪个答案以及哪个答案是正确的。谢谢你的意见:)
          【解决方案8】:

          这适用于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
          

          但这不起作用

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-12-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-10-21
            • 2014-12-21
            • 1970-01-01
            • 2011-05-30
            相关资源
            最近更新 更多