8

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

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

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

Спасибо!

3 ответа3

11

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

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

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

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

Результат:


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

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

1

Я следовал инструкциям Даниэля Бека с некоторыми изменениями и заставил это работать для файлов 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", но это было из-за реальных ошибок в скрипте. Я думаю, что ключевая проблема скрипта Дэниела в том, что он не обрабатывает пробелы в имени файла, который вы пытаетесь открыть.

-1

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .