Как я могу открыть не-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.

  1. Создать новый яблочный скрипт
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. Отредактируйте 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>
  1. Запустите приложение один раз, чтобы зарегистрировать его, и в следующий раз, когда вы откроете ссылку на расширение Chrome, оно откроет его в Chrome.
Другие вопросы по тегам