OSX "відкрити" скриптом bash


8

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

Це дійсно, дуже проста концепція, але чомусь скриптові bash виявляються сірими у діалоговому вікні пошуку "відкрити".

Я вважаю, що існують різні способи використання яблучного сценарію чи упаковки як програми ... але я не зміг зрозуміти нічого з цього, і мені не дуже хочеться підбирати іншу мову саме для цієї тривіальної задачі - міг хтось ложкою нагодувати мене, як це зробити?

Дякую!

Відповіді:


11

Це неможливо. Launch Services працює з ідентифікаторами додатків, а у скриптах bash їх немає.

Вам потрібно створити програму для обгортки за допомогою Automator.

  1. Запустіть Автоматизатор
  2. Виберіть програму
  3. Шукайте дії Run Shell Script і додайте його праворуч.
  4. Передати введення як аргументи
  5. Покладіть свій сценарій туди
  6. Зберегти десь

Ось моя версія за допомогою утиліти командного рядка Growl :

введіть тут опис зображення

Результат:

введіть тут опис зображення


Ви можете побачити ефект цієї зміни на ~/Library/Preferences/com.apple.LaunchServices.plistколи ви Change All :

введіть тут опис зображення

("Тест" - це ім'я, яке я дав своїй програмі Automator)


Дякую. Я дав йому вир, але я намагаюся відкрити додаток, створений Automator, він просто говорить, що в дії "Запустити скрипт оболонки" сталася помилка. Перевірте властивості дії та спробуйте запустити робочий процес ще раз. Що стосується найменш корисного повідомлення про помилку, яке я бачив протягом певного часу!
багатий

@Rich Чи працює він із сценарієм за замовчуванням у дії сценарію оболонки запуску? Або навіть не тоді? Чи пам’ятали ви змінити налаштування входу проходу ? Чи намагаєтесь ви двічі клацнути програму, перетягуючи файли на вашу програму чи відкриваючи лише пов’язаний файл? Що станеться, якщо розпочати його іншими способами?
Даніель Бек

Дякую. Не впевнений, як би ви бачили вихід із типового, оскільки він просто називає кішку, але, здається, це не помилка. Замість того, щоб програма викликала мій сценарій з нестандартного місця, я створив сценарій у / usr / local / bin, а потім виявив, що якщо я спробую запустити його, то скаржився, що є занадто багато рівнів символічних посилань (1 ?! ) Тому я просто скопіював сценарій туди, і він, здається, працює. Дякую!
багатий

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. Тестуйте лише одним або натисніть "Змінити все ..." Перший раз, коли я натиснув, що він помилився, але, здавалося, працює другий раз.

Розробляючи це, я отримав помилки "Запуск сценарію оболонки", але це було через фактичні помилки в сценарії. Я думаю, що ключовою проблемою сценарію Даніеля є те, що він не обробляє пробіли у назві файла, який ви намагаєтесь відкрити.


-1

Використовуйте reattach-to-user-namespaceабо з репо, або з brew install reattach-to-user-namespace. Це працює в Сьєррі, я не впевнений в інших ОС.

Після встановлення використовуйте його в скрипті bash так:

повторно встановити простір імен користувача до відкритого a_cool_file.png


Схоже, це не відповідає на питання. ОП хоче використовувати функцію "Відкрити з" Finder, щоб відкрити файл із сценарієм Bash. Надання підтримки буфера обміну під Tmux та Screen не допомагає у цьому, тим більше, що немає жодних ознак того, що Tmux або Screen навіть задіяні.
8bittree
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.