OSX „otwarty z” skryptem bash

8

Mam skrypt bash, potencjalnie wiele z nich, z którymi chciałbym móc otwierać pliki w wyszukiwarce OSX.

To naprawdę bardzo prosta koncepcja, ale z jakiegoś powodu skrypty bash są wyszarzone w oknie dialogowym „otwórz za pomocą” wyszukiwarki.

Rozumiem, że istnieją różne sposoby używania AppleScript lub pakowania jako aplikacji ... ale nie udało mi się tego rozgryźć i tak naprawdę nie chcę wybierać innego języka tylko do tego trywialnego zadania - czy ktoś mógłby mnie nakarmić łyżką, jak to zrobić?

Dzięki!

bogaty
źródło

Odpowiedzi:

11

To nie jest możliwe. Usługi uruchamiania działają z identyfikatorami aplikacji, a skrypty bash ich nie mają.

Musisz utworzyć aplikację opakowania za pomocą Automatora.

  1. Uruchom Automator
  2. Wybierz aplikację
  3. Poszukaj akcji Uruchom skrypt powłoki i dodaj ją po prawej stronie.
  4. Przekaż dane wejściowe jako argumenty
  5. Umieść tam swój skrypt
  6. Oszczędź gdzieś

Oto moja wersja, za pomocą narzędzia wiersza polecenia Growl :

wprowadź opis zdjęcia tutaj

Wynik:

wprowadź opis zdjęcia tutaj


Możesz zobaczyć wpływ tej zmiany, ~/Library/Preferences/com.apple.LaunchServices.plistgdy zmienisz wszystko :

wprowadź opis zdjęcia tutaj

(„Test” to nazwa, którą nadałem mojej aplikacji Automator)

Daniel Beck
źródło
Dzięki. Dałem mu wir, ale próbuję otworzyć aplikację utworzoną przez Automatora, która mówi tylko, że akcja „Uruchom skrypt powłoki” napotkała błąd. Sprawdź właściwości akcji i spróbuj ponownie uruchomić przepływ pracy. To jest najmniej pomocny komunikat o błędzie, jaki widziałem od jakiegoś czasu!
bogaty
@Rich Czy to działa z domyślnym skryptem w akcji uruchamiania skryptu powłoki? Czy nawet nie wtedy? Czy pamiętasz, aby zmienić preferencje wprowadzania danych wejściowych ? Czy próbujesz dwukrotnie kliknąć aplikację, przeciągnąć pliki do aplikacji lub otworzyć tylko skojarzony plik? Co się stanie, jeśli uruchomisz to w inny sposób?
Daniel Beck
Dzięki. Nie jestem pewien, jak zobaczysz wyjście z domyślnego, ponieważ po prostu wywołuje cat, ale wygląda na to, że nie popełniło błędu. Zamiast wywoływać aplikację ze skryptu z niestandardowej lokalizacji, utworzyłem skrypt w / usr / local / bin, a potem odkryłem, że jeśli spróbuję go uruchomić, to narzeka, że ​​istnieje zbyt wiele poziomów dowiązań symbolicznych (1 ?! ) Więc właśnie skopiowałem tam skrypt i wydaje się, że teraz działa. Dzięki!
bogaty
1

Postępowałem zgodnie z instrukcjami Daniela Becka z kilkoma modyfikacjami i działałem w przypadku plików URL, które chciałem otworzyć w Chrome (Firefox również działałby) na komputerze Mac.

Użyłem skryptu:

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

To analizuje linię URL = z typowego pliku URL, który wygląda następująco:

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

Zapisz skrypt Automatora w miejscu takim jak katalog ~ / Library. Zadzwoniłem do mojego OpenUrl.app.

Teraz przejdź do pliku URL i otwórz wyskakujące okienko „Uzyskaj informacje”. Zmień polecenie Otwórz za pomocą na skrypt OpenUrl.app. Przetestuj za pomocą jednego lub kliknij „Zmień wszystko ...” Za pierwszym razem kliknąłem, że dał błąd, ale wydawało się, że działa za drugim razem.

Opracowując to, otrzymałem błędy „Run Shell Script”, ale było to spowodowane faktycznymi błędami w skrypcie. Myślę, że kluczowym problemem w skrypcie Daniela jest to, że nie obsługuje spacji w nazwie pliku, którą próbujesz otworzyć.

Keith Olson
źródło
-1

Użyj reattach-to-user-namespacealbo z repozytorium, albo z brew install reattach-to-user-namespace. Działa to w Sierra, nie jestem pewien co do innych systemów operacyjnych.

Po zainstalowaniu użyj go w skrypcie bash w następujący sposób:

podłącz ponownie do przestrzeni nazw użytkownika otwórz plik_cool_.png

niegodziwy
źródło
To nie wydaje się odpowiadać na pytanie. OP chce użyć funkcji „Otwórz za pomocą” Findera, aby otworzyć plik ze skryptem Bash. Zapewnienie obsługi schowka w Tmux i Screen nie pomaga w tym, zwłaszcza że nic nie wskazuje na to, że Tmux lub Screen są w to zaangażowane.
8bittree,