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.