Как я могу открыть не-http URL (расширение Chrome) в Google Chrome с терминала в OS X?
Я пытаюсь добавить ярлык для открытия Chrome с URL-адресом, отличным от http, из сценария bash. Вот что у меня есть:
/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://". Когда я загружаю его как файл, я не получаю данные (мои запросы на отдых), которые были сохранены как часть приложения. Без этого это бесполезно.
Вот что я запускаю из 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 Web Store для этого приложения.
Данные, которые я хочу использовать, по-видимому, находятся в файле базы данных для этого расширения, которое находится в:
/Users/me/Library/Application Support/Google/Chrome/Default/databases/chrome-extension_extension_hgmloofddffdnphfgcellkdfbfbjeloo_0/5
Есть идеи?
4 ответа
Я верю open
пытается обработать переданный URL, прежде чем передать его в 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
Обратите внимание, что приведенный выше код на самом деле AppleScript, завернутый в bash heredoc и переданный в osascript
команда, так что вы можете поместить его прямо в терминал или сценарий оболочки.
Независимо от того, хотите вы этого или нет, вы говорите 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 в режим навигации по каталогам, где вы сможете затем загрузить любой файл, который вам нужен.
Если это не поможет, было бы хорошо уточнить, какова ваша цель в исходном вопросе.
Это работает, но не используетopen
:
'/Applications/Google Chrome.app/Contents/MacOS/Google Chrome' "chrome-extension://chphlpgkkbolifaimnlloiipkdnihall/onetab.html"
Я использую это в работе cron.
Вы можете создать приложение AppleScript для открытия определенной схемы URL с помощью Google Chrome.
- Создать новый яблочный скрипт
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 как приложение
Отредактируйте Info.plist и добавьте новый ключ
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.