![如何从 OS X 中的终端在 Google Chrome 中打开非 http URL(Chrome 扩展程序)?](https://linux22.com/image/1429735/%E5%A6%82%E4%BD%95%E4%BB%8E%20OS%20X%20%E4%B8%AD%E7%9A%84%E7%BB%88%E7%AB%AF%E5%9C%A8%20Google%20Chrome%20%E4%B8%AD%E6%89%93%E5%BC%80%E9%9D%9E%20http%20URL%EF%BC%88Chrome%20%E6%89%A9%E5%B1%95%E7%A8%8B%E5%BA%8F%EF%BC%89%EF%BC%9F.png)
我正在尝试添加一个快捷方式,以便使用 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 方案。
- 创建新的 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
将此 AppleScript 脚本保存为应用
编辑信息列表并添加一个新键
URL types
(数组)
<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>
- 启动该应用程序一次进行注册,下次打开 chrome 扩展程序链接时,它将在 Chrome 上打开它。
答案4
这有效,但它不使用open
:
'/Applications/Google Chrome.app/Contents/MacOS/Google Chrome' "chrome-extension://chphlpgkkbolifaimnlloiipkdnihall/onetab.html"
我在 cron 作业中使用它。