Mam skrypt powłoki, który ma uprawnienia do wykonywania przez użytkownika w systemie OS X, ale po dwukrotnym kliknięciu otwiera się w edytorze tekstu. Jak mogę go uruchomić, klikając go dwukrotnie?
233
Najpierw w terminalu włącz skrypt do wykonania, wpisując:
chmod a+x (yourscriptname)
Następnie w Finderze kliknij plik prawym przyciskiem myszy i wybierz „Otwórz za pomocą”, a następnie „Inne ...”.
Tutaj wybierz aplikację, w której chcesz uruchomić plik, w tym przypadku będzie to Terminal. Aby móc wybrać terminal, musisz przełączyć z „Zalecanych aplikacji” na „Wszystkie aplikacje”. (Aplikacja Terminal.app znajduje się w folderze Narzędzia)
UWAGA: chyba że nie chcesz powiązać wszystkich plików z tym rozszerzeniem, które mają być uruchamiane w terminalu, nie powinieneś zaznaczać opcji „Zawsze otwieraj z”.
.command
jest domyślnie wykonywalny z Findera, bez potrzeby instruowania Findera, jak go otworzyć..command
rozszerzenie pliku.Czy próbowałeś użyć
.command
rozszerzenia nazwy pliku?źródło
chmod +x
), ale.command
rozszerzenie jest już połączone z terminalem. Świetne rozwiązanie, dziękujęPocząwszy od OSX 10.10 (Yosemite) i od co najmniej OS X 10.8 (Mountain Lion) , zachowanie jest następujące po otwarciu (podwójnym kliknięciem) skryptów wykonywalnych z Findera :
.command
:Jednak za pomocą terminala
Preferences... > Profiles
możesz zdecydować o automatycznym zamknięciu okna po zakończeniu skryptu.cd -- "$(dirname "$BASH_SOURCE")"
zaraz po linii shebangcd -- "$(dirname "$0")"
.chmod +x <script>
w terminalu; w przeciwnym razie zobaczysz następujące objawy:.command
: Finder wyświetla mylący komunikat o błędzie, który sugeruje, że problem można rozwiązać za pomocąFile > Get Info
, co nie jest prawdą - użyjchmod +x
metody sugerowanej powyżej.#!/bin/bash
): zachowanie jest tak, jakby to był przyrostek.sh
- patrz poniżej..sh
, zarówno wykonywalne, jak i nie:TextEdit.app
lub, jeśli są zainstalowane, za pomocąXcode.app
..scpt
lub.applescript
(nawet jeśli same są oznaczone jako pliki wykonywalne, co zwykle nie ma miejsca):[Apple]Script Editor
[1] Plik wykonywalny oznacza: skrypt z ustawionymi bitami uprawnień do wykonania i użytkownikiem wywołującym - w stosunku do własności pliku - dlatego potencjalnie może go wykonać.
Jeśli używasz
chmod a+x
ustawić wszystkie bity uprawnień (co jest typowe), każdy może ją wywołać (zakładając, że są one również możliwość odczytu pliku na podstawie odczytu bitu zezwolenia (S) i własności danego pliku).źródło
osascript
którą można dołączyć do.command
pliku zamiast ręcznego wprowadzania zmian w profilu.osascript -e '...'
polecenia na końcu skryptu? Jakie jest konkretne polecenie i czy zapewnia ono zamknięcie prawej karty, nawet jeśli skrypt nie jest uruchomiony na pierwszej karcie?osascript -e 'tell application "Terminal" to close front window' > /dev/null 2>&1 &
... Może nie działać w każdym scenariuszu, chociaż przekierowanie na koniec jest naprawdę kluczem - w przeciwnym razie osascript można łatwo dostosować (np. okno może wymagać zmiany na tab, jeśli jest to domyślne zachowanie twojego terminala itp.)..command
uruchomieniu pliku skryptu pomimo ustawienia profilu?bash
skrypt, dodajread -p 'Press Return to close this window.'
jako ostatnią instrukcję.Alternatywnie możesz utworzyć zwykłą aplikację Mac OS X ze skryptu za pomocą Platypus
źródło
Prostym sposobem jest zmiana numeru wewnętrznego na
.command
lub brak rozszerzenia.Ale to otworzy Terminal i będziesz musiał go zamknąć. Jeśli nie chcesz widzieć żadnych danych wyjściowych, możesz użyć Automatora, aby utworzyć aplikację Mac, którą możesz kliknąć dwukrotnie, dodać do stacji dokującej itp.
Automator
aplikacjęRun
przycisk w prawym górnym rogu, aby go przetestować.File > Save
stworzyć aplikację.źródło
Nie trzeba korzystać z aplikacji innych firm, takich jak Platypus.
Wystarczy utworzyć skrypt Apple za pomocą edytora skryptów i użyć polecenia
do shell script "shell commands"
do bezpośrednich wywołań poleceń lub wykonywalnych plików skryptów powłoki, zabezpieczyć gdzieś edytowalny plik skryptu, a następnie wyeksportować go, aby utworzyć skrypt aplikacji. skrypt aplikacji można uruchomić, klikając dwukrotnie lub wybierając w folderze paska.źródło
Możesz również ustawić wartości domyślne według rozszerzenia pliku za pomocą RCDefaultApp:
http://www.rubicode.com/Software/RCDefaultApp/
potencjalnie możesz ustawić .sh, aby otwierał się w iTerm / Terminal itp. wymagałoby to uprawnień użytkownika do wykonania, np
źródło
chmod 774 filename
Uwaga : plik o nazwie „nazwa pliku”, który zawiera skrypt bash, nie ma rozszerzenia
źródło