OSX 'открыть с помощью' сценария bash

У меня есть скрипт bash, возможно, многие из них на самом деле, и я хотел бы иметь возможность открывать файлы в искателе OSX.

Это действительно очень простая концепция, но по какой-то причине сценарии bash выделены серым цветом в диалоговом окне поиска с помощью функции поиска.

Я понимаю, что существуют различные способы использования appleScript или упаковки в качестве приложения... но я не смог ничего из этого выяснить, и я действительно не хочу выбирать другой язык только для этой тривиальной задачи - Может ли кто-нибудь кормить меня ложкой, как это сделать?

Спасибо!

3 ответа

Решение

Это невозможно. Launch Services работает с идентификаторами приложений, а в bash-скриптах их нет.

Вам необходимо создать приложение-оболочку с помощью Automator.

  1. Запустить Automator
  2. Выберите приложение
  3. Найдите действие Run Shell Script и добавьте его справа.
  4. Передать ввод в качестве аргументов
  5. Поместите свой сценарий туда
  6. Сохранить где-нибудь

Вот моя версия, используя утилиту командной строки Growl:

введите описание здесь

Результат:

введите описание здесь


Вы можете увидеть эффект, который оказывает это изменение на ~/Library/Preferences/com.apple.LaunchServices.plist когда вы меняете все:

введите описание здесь

("Тест" - это имя, которое я дал своему приложению Automator)

Я следовал инструкциям Даниэля Бека с некоторыми изменениями и заставил это работать для файлов URL, которые я хотел открыть в Chrome (Firefox также будет работать) на Mac.

Сценарий, который я использовал:

sed 's/^URL=/URL=/' "$1" | grep -m 1 '^URL=' | sed 's/^URL=//' | tr -d '\r' | xargs open -a "Google Chrome"

Это анализирует строку URL= из типичного файла URL, который выглядит следующим образом:

[InternetShortcut]
URL=http://www.docircuits.com/pricing
IDList=
HotKey=0
IconFile=O:\Apps\Firefox\Data\profile\shortcutCache\4t0JW4mY1qRPhiYz1fY3dw==.ico
IconIndex=0

Сохраните скрипт Automator где-нибудь, например, в каталоге ~/Library. Я позвонил в мой OpenUrl.app.

Теперь перейдите к URL-файлу и откройте всплывающее окно "Информация". Измените команду Open With на ваш скрипт OpenUrl.app. Протестируйте его одним нажатием или нажмите "Изменить все...". Первый раз, когда я нажал, что это выдало ошибку, но, похоже, сработало во второй раз.

При разработке этого я получил ошибки "Run Shell Script", но это было из-за реальных ошибок в скрипте. Я думаю, что ключевая проблема скрипта Дэниела в том, что он не обрабатывает пробелы в имени файла, который вы пытаетесь открыть.

Использование reattach-to-user-namespaceлибо из репо, либо с brew install reattach-to-user-namespace, Это работает в Сьерре, я не уверен насчет других ОС.

После установки используйте его в скрипте bash примерно так:

Прикрепите пространство имен к пользователю open a_cool_file.png

Другие вопросы по тегам