Jak wykonać skrypty wiersza poleceń?

17

W systemie Windows mogę tworzyć .batpliki. Klikam go dwukrotnie, a wszystkie wiersze są interpretowane tak, jakbym wprowadził je do konsoli.

Z jakiego pliku lub programu muszę korzystać w OS X? Jeśli chcę napisać plik z;

 echo hello world

Chcę dwukrotnie kliknąć ten plik i uruchomić go w konsoli. Jak to robię?

Rodrigo
źródło
czy plik musi zostać uruchomiony po dwukrotnym kliknięciu, czy po prostu chcesz uruchomić plik, wpisując nazwę pliku?
Phil M
plik podwójnie kliknięty jest szybszy :)
Rodrigo

Odpowiedzi:

24

Podstawy terminali w systemie OS X są takie same, jak w systemie Linux. To, czego konkretnie szukasz, jest powszechnie określane jako „Skrypty powłoki”.

Domyślną powłoką po otwarciu Terminal.app(zlokalizowaniu /Applications/Utilties) jest powłoka bash.

OS X ma wbudowany moduł obsługi powłoki dostępny przez Finder i inne aplikacje przez .commandrozszerzenie, choć frustrująco nie przez .shrozszerzenie. Jednak skonfigurowanie skryptu do uruchamiania za pomocą Findera jest jeszcze bardziej skomplikowane.

  1. Utwórz prosty skrypt powłoki, taki jak przykład. Stworzyłem aplikację Hello World:
#!/bin/bash
echo "Hello World"
  1. Zapisz ten plik jako HelloWorld.command.

  2. Nadaj temu plikowi uprawnienia do wykonania. chmod u+x HelloWorld.commandpowinien to zrobić.

  3. Otwórz katalog, w którym zapisałeś ten plik w Finderze. Następnie kliknij dwukrotnie HelloWorld.commandplik.

Spowoduje to otwarcie terminala i wykonanie skryptu, dane wyjściowe na moim komputerze są następujące:

$ /Users/jason/Applications/HelloWorld.command; wyjście;
Witaj,
wyloguj się

[Proces zakończony]

Alternatywnym sposobem wykonania tego pliku jest samodzielne pozostawanie w Terminalu, po prostu problem z ./HelloWorld.commandzałożeniem, że znajdujesz się w tym samym katalogu co plik.

Spowoduje to znacznie prostsze wyjście:

Aplikacje jason-mac $ ./HelloWorld.command
Hello World
Aplikacje jason-mac $

Właśnie utworzyłeś i wykonałeś skrypt powłoki w OS X!

Jason Salaz
źródło
Nawiasem mówiąc: To absurdalnie frustrujące, że OS X nie robi tego z plikami „.sh”, tylko z plikami „.command”. Tak, można to zmienić, ale .command już istnieje, więc to jest moje sugerowane rozwiązanie.
Jason Salaz,
Czy chcesz zadać pytanie, jak wstrzyknąć .sh do bazy danych usług uruchamiania, czy powinienem?
bmike
Najwyraźniej wpadłeś na ten pomysł (ta myśl nawet nie przyszła mi do głowy), więc możesz to zrobić.
Jason Salaz,
Mam pomysł od ciebie - proszę, ima zapytaj o to sam ...
bmike
Daje mi:chown: u+x: Invalid argument
Rodrigo,
4

Odpowiednikiem konsoli lub wiersza polecenia w systemie Windows jest aplikacja Terminal znajdująca się w / Applications / Utilities /

Odpowiednikiem DOS (lub jakkolwiek nazywają to w dzisiejszych czasach) jest „bash”

Odpowiednikiem pliku wsadowego (.bat) w systemie Windows jest skrypt powłoki (.sh)

Wystarczy wyszukać w Google „referencje” „bash”, a reszty się dowiesz. Poleciłbym także zakup książki kucharskiej Bash (O'Reilly).

W szczególności byłoby to, co wpisałeś w oknie terminala, aby uzyskać skrypt „hello world”:

Aby utworzyć plik:

    echo "echo hello world" > file.sh

Aby zmienić uprawnienia, aby plik był wykonywalny:

    chmod 755 file.sh

Aby uruchomić skrypt:

    ./file.sh

Jeśli chcesz móc kliknąć go dwukrotnie w Finderze, kliknij plik prawym przyciskiem myszy (lub kliknij z wciśniętym klawiszem Control) i wybierz Uzyskaj informacje, a następnie w obszarze Otwórz za pomocą wybierz aplikację Terminal. Lub możesz użyć rozszerzenia .command zamiast rozszerzenia .sh.

Phil M.
źródło
2

Prawdopodobnie chcesz spojrzeć na AppleScript. Ta książka Sal Soghoian jest uważana przez wielu za książkę o AppleScript.

Innym dobrym sposobem na automatyzację aplikacji dla komputerów Mac jest użycie Automatora . Możesz także spróbować. Mam nadzieję że to pomoże.

Aktualizacja

Wygląda na to, że szukasz czegoś takiego jak skrypty powłoki uniksowej. Te dwa samouczki są przyzwoite i wydają się obejmować podstawy.

Christian Correa
źródło
Widziałem to, ale AppleScript nie jest skryptem terminalu. Myślę, że możesz: „Idź do terminalu i napisz polecenie x”. Cóż, nie jest styl .bat (i trochę trudniejszy)
Rodrigo
Wygląda na to, że szukasz skryptów powłoki Unix.
Christian Correa,
0

Skrypty powłoki. Nie sądzę, aby Ask Different był odpowiednim miejscem do szczegółowej dyskusji, ale tutaj jest bardzo szczegółowy przewodnik: http://tldp.org/LDP/abs/html/index.html

Mac OS X ma certyfikat UNIX od wersji 10.5 (prawda?), Więc ta mądrość dotyczy również Linuksa i innych systemów operacyjnych typu UNIX.

(w mniej skomplikowany sposób Automator systemu Mac OS X jest dość potężny, podobnie jak AppleScript Editor, z których oba mogą wykonywać skrypty powłoki i inne polecenia za pomocą programów i owijać je w wygodny pakiet .app dla Launchpada lub udostępnianie przyjaciele)

Swizzlr
źródło
Od wprowadzenia przewodnika połączyłem: „Program powłoki, zwany skryptem, jest łatwym w użyciu narzędziem do budowania aplikacji poprzez„ sklejanie ”wywołań systemowych, narzędzi, programów narzędziowych i skompilowanych plików binarnych. Praktycznie cały repertuar Polecenia, narzędzia i narzędzia UNIX są dostępne do wywoływania przez skrypt powłoki. Gdyby tego było mało, wewnętrzne polecenia powłoki, takie jak testy i konstrukcje pętli, zapewniają dodatkową moc i elastyczność skryptom. ”
Swizzlr
A przez „odpowiednie miejsce” myślę, że skrypty powłoki najlepiej omówić na SuperUser: superuser.com/questions/tagged/shell-script
Swizzlr
-2

Mac to plik .sh, czyli skrypt Shell

Davide
źródło
Ale dzwoniąc z wyszukiwarki, będziesz chciał użyć .command. .shto nieobsługiwany typ pliku z wyszukiwarki (domyślnie).
Jason Salaz,