OSX 'открыть с помощью' сценария bash
У меня есть скрипт bash, возможно, многие из них на самом деле, и я хотел бы иметь возможность открывать файлы в искателе OSX.
Это действительно очень простая концепция, но по какой-то причине сценарии bash выделены серым цветом в диалоговом окне поиска с помощью функции поиска.
Я понимаю, что существуют различные способы использования appleScript или упаковки в качестве приложения... но я не смог ничего из этого выяснить, и я действительно не хочу выбирать другой язык только для этой тривиальной задачи - Может ли кто-нибудь кормить меня ложкой, как это сделать?
Спасибо!
3 ответа
Это невозможно. Launch Services работает с идентификаторами приложений, а в bash-скриптах их нет.
Вам необходимо создать приложение-оболочку с помощью Automator.
- Запустить Automator
- Выберите приложение
- Найдите действие Run Shell Script и добавьте его справа.
- Передать ввод в качестве аргументов
- Поместите свой сценарий туда
- Сохранить где-нибудь
Вот моя версия, используя утилиту командной строки 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