如何从 OS X 中的终端在 Google Chrome 中打开非 http URL(Chrome 扩展程序)?

如何从 OS X 中的终端在 Google Chrome 中打开非 http URL(Chrome 扩展程序)?

我正在尝试添加一个快捷方式,以便使用 bash 脚本中的非 http url 打开 Chrome。这是我得到的:

/usr/bin/open -a "/Applications/Google Chrome.app" 'chrome-extension://hgmloofddfasdfasdffgcellkdadsfadsfbjeloo/RestClient.html#RequestPlace:saved/2'   

由于参数不是以“http”开头,Chrome 会尝试将其作为文件打开,但这当然不存在,也不是我想要的。

有没有办法让 Chrome 将其视为 URL?

编辑:

@mjb - 差不多可以了。谢谢。

扩展程序(Advanced Rest Client)已在本地安装。但是,将其作为文件加载和使用“chrome-extension://”加载有所不同。当我将其作为文件加载时,我无法获取已保存为应用程序一部分的数据(我的 rest 请求)。没有这些数据,它就毫无用处。

以下是我从 bash 运行的内容:

/usr/bin/open -a /Applications/Google\ Chrome.app /Users/me/Library/Application\ Support/Google/Chrome/Default/Extensions/hgmloofdphfgcellkdfbfbjeloo/3.1.7_0/RestClient.html

它加载了我的应用程序,并且它出现了 - 只是没有我的上下文/数据。当我在 Chrome 中单击扩展程序时,它使用以下 URL:

chrome-extension://hgmloofdphfgcellkdfbfbjeloo/RestClient.html#RequestPlace:saved/2

注意末尾的哈希值没有区别。UUID 与本地目录相同。

我也尝试用以下方法加载它:

https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffgcellkdfbfbjeloo/RestClient.html

这只会打开该应用程序的 Chrome 网上应用店页面。

我想要使​​用的数据确实出现在此扩展的数据库文件中,该文件位于:

/Users/me/Library/Application Support/Google/Chrome/Default/databases/chrome-extension_extension_hgmloofddffdnphfgcellkdfbfbjeloo_0/5

有任何想法吗?

答案1

我认为open在将 URL 传递给 Chrome 之前,它会尝试对其进行处理。由于 Chrome 无法识别“chrome-extension”方案,因此会将其解释为相对文件路径。

相反,您可以使用 AppleScript 来实现这一点。

osascript <<EOD
set theURL to "chrome-extension://nmmhkkegccagdldgiimedpiccmgmieda/html/craw_window.html"
tell application "Google Chrome"
 if windows = {} then
  make new window
  set URL of (active tab of window 1) to theURL
 else
  make new tab at the end of window 1 with properties {URL:theURL}
 end if
 activate
end tell
EOD

请注意,上述代码实际上是用 bash heredoc 包装的 AppleScript,并传递给命令osascript,因此您可以将其直接放入终端或 shell 脚本中。

答案2

无论您是否有意,您都在告诉 Chrome 打开本地文件。

如果你尝试在线导航到扩展程序,它有一个 https 地址,例如 Evernote Web Clipper:

https://chrome.google.com/webstore/detail/evernote-web-clipper/pioclpoplcdbaefihamjohnefbikjilc?hl=en-US

如果您的目标是加载本地扩展,则必须提供扩展的完整路径,而不是相对路径。默认情况下,您可以在此处找到它们:

/Users/<USER>/Library/Application Support/Google/Chrome/Default/Extensions

但是这些没有本地chrome-extension://URL。如果我理解正确的话,您需要执行以下操作:

$ /usr/bin/open -a "/Applications/Google Chrome.app" "/Users/<USER>/Library/Application Support/Google/Chrome/Default/Extensions/<EXTENSION-ID>"

<USER>您的用户在哪里<EXTENSION-ID>,是您的扩展程序的唯一标识符。这将使 Chrome 进入目录导航模式,然后您可以从那里加载所需的任何文件。

如果这没有帮助,最好在原始问题中澄清你的目标是什么。

答案3

您可以制作一个 AppleScript 应用程序来使用 Google Chrome 打开特定的 URL 方案。

  1. 创建新的 applescript
on open location theURL
  tell application "/Applications/Google Chrome.app"
      set newwindow to make new window
      activate
      set URL of active tab of newwindow to theURL
  end tell
end open location
  1. 将此 AppleScript 脚本保存为应用

  2. 编辑信息列表并添加一个新键URL types(数组)

URL 方案信息.plist

<key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLName</key>
            <string>Applescript urls</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>chrome-extension</string>
            </array>
            <key>LSIsAppleDefaultForScheme</key>
            <true/>
        </dict>
    </array>
  1. 启动该应用程序一次进行注册,下次打开 chrome 扩展程序链接时,它将在 Chrome 上打开它。

答案4

这有效,但它不使用open

'/Applications/Google Chrome.app/Contents/MacOS/Google Chrome' "chrome-extension://chphlpgkkbolifaimnlloiipkdnihall/onetab.html"

我在 cron 作业中使用它。

相关内容