Jak skonfigurować skrypt powłoki do wykonywania ze stacji dokującej Mac OSX? Wygląda na to, że samo utworzenie skrótu spowoduje otwarcie pliku w moim edytorze. Czy jest flaga, którą muszę gdzieś ustawić, aby nakazać jej uruchomienie zamiast otwierania do edycji?
160
Odpowiedzi:
Możesz utworzyć przepływ pracy Automatora w jednym kroku - „Uruchom skrypt powłoki”
Następnie
File > Save As
zmień Format pliku na „Aplikacja”. Po otwarciu aplikacji uruchomi ona krok skryptu powłoki, wykonując polecenie i kończąc pracę po jego zakończeniu.Zaletą tego jest to, że to naprawdę proste i można bardzo łatwo uzyskać dane wejściowe użytkownika (powiedzmy, wybierając kilka plików), a następnie przekazać je na wejście skryptu powłoki (na stdin lub jako argumenty).
(Automator jest w twoim
/Applications
folderze!)źródło
open -a SomeAppThing.app --args --etc=2
to, powinieneś się skupić. Alternatywnie możesz skupić się na Applescript (np.osascript -e 'tell application "Google Chrome" to activate'
)Jeśli nie potrzebujesz okna terminala, możesz przekształcić dowolny plik wykonywalny w aplikację, po prostu tworząc skrypt powłoki
Example
i przenosząc go do nazwy plikuExample.app/Contents/MacOS/Example
. Możesz umieścić tę nową aplikację w stacji dokującej jak każdą inną i uruchomić ją jednym kliknięciem.UWAGA: nazwa aplikacji musi dokładnie odpowiadać nazwie skryptu. Zatem katalog najwyższego poziomu musi być,
Example.app
a skrypt wContents/MacOS
podkatalogu musi mieć nazwęExample
, a skrypt musi być wykonywalny.Jeśli potrzebujesz wyświetlić okno terminala, nie mam prostego rozwiązania. Prawdopodobnie mógłbyś coś zrobić z Applescript, ale to nie jest zbyt czyste.
źródło
example.sh.app
, a nie tylkoexample.app
. Otrzymasz ostrzeżenie o uszkodzonej aplikacji, jeśli te nie pasują.app
i taką strukturą, będzie on traktowany jako aplikacja wykonywalna. Jeśli chcesz przejrzeć zawartość tego folderu w Finderze, musisz kliknąć go prawym przyciskiem myszy i wybrać opcję „wyświetl zawartość pakietu” (ponieważ dwukrotne kliknięcie spowoduje uruchomienie aplikacji). W terminalu pojawi się po prostu jako folder. (Nie jestem pewien, czy Finder pozwoli ci samodzielnie zmienić nazwę folderu na .app; może zajść potrzeba zmiany nazwy w Terminalu.)Na OSX Mavericks:
Spraw, aby Twój skrypt powłoki był wykonywalny:
Zmień nazwę skryptu, aby miał
.app
przyrostek:Zmień nazwę skryptu z powrotem na
.sh
sufiks:Teraz po kliknięciu skryptu w doku pojawi się okno terminala i uruchomi skrypt.
Bonus: Aby terminal zamykał się po zakończeniu skryptu, dodaj
exit 0
na końcu i zmień ustawienia terminala na „zamknij powłokę, jeśli wyjdziesz z niej w sposób czysty”, tak jak jest to opisane w tej odpowiedzi SO .źródło
Wiem, że to stare, ale na wypadek, gdyby było pomocne dla innych:
Jeśli potrzebujesz uruchomić skrypt i chcesz, aby pojawił się terminal, abyś mógł zobaczyć wyniki, które możesz zrobić, tak jak powiedział Abyss Knight, i zmień rozszerzenie na .command. Jeśli klikniesz go dwukrotnie, otworzy się okno terminala i uruchomi się.
Jednak potrzebowałem tego do uruchomienia z automatora lub appleScript. Aby to otworzyć nowy terminal, polecenie, które uruchomiłem z polecenia „uruchom skrypt powłoki”, brzmiało „otwórz myShellScript.command” i zostało otwarte w nowym terminalu.
źródło
Tak długo, jak skrypt jest wykonywalny i nie ma żadnego rozszerzenia, możesz go przeciągnąć tak, jak jest, na prawą stronę (stronę dokumentu) Docka, a po kliknięciu zostanie uruchomiony w oknie terminala zamiast otwierania edytora.
Jeśli chcesz mieć rozszerzenie (takie jak foo.sh), możesz przejść do okna informacji o pliku w Finderze i zmienić domyślną aplikację dla tego konkretnego skryptu z dowolnego innego (TextEdit, TextMate, cokolwiek jest ustawione domyślnie na komputerze .sh) do Terminala. Będzie wtedy po prostu wykonywany zamiast otwierania w edytorze tekstu. Ponownie będziesz musiał przeciągnąć go na prawą stronę Docku.
źródło
Myślę, że ten wątek może być pomocny: http://forums.macosxhints.com/archive/index.php/t-70973.html
Aby sparafrazować, możesz zmienić jego nazwę za pomocą rozszerzenia .command lub utworzyć AppleScript do uruchomienia powłoki.
źródło
Jak wspomniał joe, stworzenie skryptu powłoki, a następnie utworzenie skryptu jabłkowego, który wywoła skrypt powłoki, osiągnie to i jest całkiem przydatne.
Skrypt powłoki
Utwórz swój skrypt powłoki w swoim ulubionym edytorze tekstu, na przykład:
mono "/Volumes/Media/~Users/me/Software/keepass/keepass.exe"
(to uruchamia plik wykonywalny w32, używając frameworka mono)
Zapisz skrypt powłoki, na przykład „StartKeepass.sh”
Apple Script
Otwórz edytor AppleScript i wywołaj skrypt powłoki
do shell script "sh /Volumes/Media/~Users/me/Software/StartKeepass.sh" user name "<enter username here>" password "<Enter password here>" with administrator privileges
do shell script
- Polecenie applecript do wywoływania zewnętrznych poleceń powłoki"sh ...."
- to jest twój skrypt powłoki (pełna ścieżka) utworzony w kroku pierwszym (możesz również uruchamiać polecenia bezpośrednie, mógłbym pominąć skrypt powłoki i po prostu uruchomić tutaj moje polecenie mono)user name
- deklaruje w applecript, że chcesz uruchomić komendę jako określony użytkownik"<enter username here>
- zamień na swoją nazwę użytkownika (zachowując cudzysłowy) ex "josh"password
- deklaruje, aby applecript Twoje hasło"<enter password here>"
- zamień na swoje hasło (zachowując cudzysłowy) ex "moje hasło"with administrative privileges
- deklaruje, że chcesz działać jako administratorUtwórz swoją aplikację .APP
zapisz swój skrypt jabłkowy jako nazwa_pliku.scpt, w moim przypadku RunKeepass.scpt
zapisz jako ... twój applecript i zmień format pliku na aplikację, co w moim przypadku daje RunKeepass.app
Skopiuj plik aplikacji do folderu aplikacji
źródło
W edytorze skryptów:
do shell script "/full/path/to/your/script -with 'all desired args'
"Zapisz jako pakiet aplikacji.
Dopóki wszystko, co chcesz zrobić, to uzyskać efekt skryptu, będzie to działać dobrze. Nie zobaczysz STDOUT ani STDERR.
źródło
Ktoś napisał ...
źródło