Wie führe ich Befehlszeilenskripte aus?

17

In Windows kann ich .batDateien erstellen . Ich doppelklicke darauf und alle Zeilen werden so interpretiert, als hätte ich sie in die Konsole eingegeben.

Welche Datei oder welches Programm muss ich unter OS X verwenden? Wenn ich eine Datei mit schreiben will;

 echo hello world

Ich möchte auf diese Datei doppelklicken und sie in einer Konsole ausführen lassen. Wie mache ich das?

Rodrigo
quelle
Muss die Datei beim Doppelklicken ausgeführt werden oder möchten Sie die Datei nur durch Eingabe des Dateinamens ausführen?
Phil M
doppelt geklickte Datei ist schneller :)
Rodrigo

Antworten:

24

Die Grundlagen des Terminals in OS X sind die gleichen wie in Linux. Was Sie speziell suchen, wird allgemein als "Shell Scripting" bezeichnet.

Die Standard-Shell beim Öffnen Terminal.app(befindet sich in /Applications/Utilties) ist die Bash-Shell.

OS X verfügt über einen integrierten Shell-Handler, auf den über Finder und andere Anwendungen über die .commandErweiterung zugegriffen werden kann, allerdings nicht über die .shErweiterung. Das Einrichten des Skripts für die Ausführung über den Finder ist jedoch noch komplizierter.

  1. Erstellen Sie ein einfaches Shell-Skript wie in Ihrem Beispiel. Ich habe eine Hello World-Anwendung erstellt:
#!/bin/bash
echo "Hello World"
  1. Speichern Sie diese Datei als HelloWorld.command.

  2. Erteilen Sie dieser Datei die Erlaubnis, ausgeführt zu werden. chmod u+x HelloWorld.commandsollte das tun.

  3. Öffnen Sie das Verzeichnis, in dem Sie diese Datei im Finder gespeichert haben. Doppelklicken Sie dann auf die HelloWorld.commandDatei.

Dies öffnet ein Terminal und führt das Skript aus. Die Ausgabe auf meinem Computer sieht folgendermaßen aus:

$ /Users/jason/Applications/HelloWorld.command; Ausfahrt;
Hallo
Weltausloggen

[Prozess abgeschlossen]

Die alternative Art, diese Datei auszuführen, ist, während Sie sich noch im Terminal befinden, setzen Sie einfach voraus, ./HelloWorld.commanddass Sie sich im selben Verzeichnis wie die Datei befinden.

Dies führt zu einer viel einfacheren Ausgabe:

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

Sie haben gerade ein Shell-Skript in OS X erstellt und ausgeführt!

Jason Salaz
quelle
Nebenbei bemerkt: Es ist lächerlich frustrierend, dass OS X dies nicht mit ".sh" -Dateien tut, sondern nur mit ".command" -Dateien. Ja, es ist möglich, dies zu ändern, aber der Befehl ist bereits vorhanden. Dies ist also meine vorgeschlagene Lösung.
Jason Salaz
Möchten Sie die Frage stellen, wie .sh in die Datenbank der Startdienste eingefügt werden soll, oder soll ich?
bmike
Sie hatten offensichtlich die Idee (der Gedanke kam mir nicht einmal in den Sinn), also können Sie es gerne tun.
Jason Salaz
Ich habe die Idee von dir - hier geht es, ich frage alles alleine ...
bmike
Es gibt mir:chown: u+x: Invalid argument
Rodrigo
4

Das Äquivalent zur Konsole oder Eingabeaufforderung in Windows ist die Terminal-App unter / Programme / Dienstprogramme /.

Das Äquivalent zu DOS (oder wie auch immer sie es heutzutage nennen) ist "bash"

Das Äquivalent einer Batchdatei (.bat) in Windows ist ein Shell-Skript (.sh).

Führen Sie einfach eine Google-Suche nach "bash" "reference" durch und Sie werden den Rest herausfinden. Ich würde auch empfehlen, das Bash Cookbook (O'Reilly) zu kaufen.

Im Einzelnen würden Sie Folgendes in ein Terminalfenster eingeben, um Ihr "Hallo Welt" -Skript zu erhalten:

So erstellen Sie die Datei:

    echo "echo hello world" > file.sh

So ändern Sie die Berechtigungen, um die Datei ausführbar zu machen:

    chmod 755 file.sh

So führen Sie das Skript aus:

    ./file.sh

Wenn Sie im Finder darauf doppelklicken möchten, klicken Sie mit der rechten Maustaste (oder bei gedrückter Ctrl-Taste) auf die Datei und wählen Sie Informationen abrufen. Wählen Sie dann unter Öffnen mit die Terminal-App aus. Oder Sie können die Erweiterung .command anstelle der Erweiterung .sh verwenden.

Phil M
quelle
2

Sie möchten wahrscheinlich AppleScript einen Blick geben. Dieses Buch von Sal Soghoian wird von vielen als das beste Buch für AppleScript angesehen.

Eine weitere Möglichkeit für Benutzer, Mac-Apps zu automatisieren, ist die Verwendung von Automator . Vielleicht möchten Sie es auch versuchen. Hoffe das hilft.

Aktualisieren

Es scheint, dass Sie nach etwas wie Unix-Shell-Scripting suchen. Diese beiden Tutorials sind anständig und scheinen die Grundlagen abzudecken.

Christian Correa
quelle
Ich habe das gesehen, aber das AppleScript ist nicht das Terminal-Skript. Ich denke, Sie können tun: "Gehen Sie zum Terminal und schreiben Sie x Befehl". Nun, ist das nicht der .bat-Stil (und etwas schwieriger)
Rodrigo
Anscheinend suchen Sie nach Unix-Shell-Skripten.
Christian Correa
0

Shell-Skripte. Ich glaube nicht, dass Ask Different der geeignete Ort wäre, um ausführlich darüber zu diskutieren, aber es gibt hier eine sehr ausführliche Anleitung: http://tldp.org/LDP/abs/html/index.html

Mac OS X ist ab 10.5 UNIX-zertifiziert (richtig?), Daher gilt diese Weisheit auch für Linux und andere UNIX-ähnliche Betriebssysteme.

(In weniger komplexer Weise ist der Automator von Mac OS X ziemlich leistungsfähig, ebenso wie der AppleScript-Editor, mit dem Shell-Skripte und andere Befehle mit Programmen ausgeführt und in einem praktischen .app-Bundle für Launchpad oder zum Teilen mit ausgeführt werden können.) Freunde)

Swizzlr
quelle
Von der Einführung des Handbuchs habe ich verlinkt: "Ein Shell-Programm, genannt Skript, ist ein benutzerfreundliches Werkzeug zum Erstellen von Anwendungen durch" Zusammenfügen "von Systemaufrufen, Werkzeugen, Dienstprogrammen und kompilierten Binärdateien. Praktisch das gesamte Repertoire von UNIX-Befehle, -Dienstprogramme und -Tools können von einem Shell-Skript aufgerufen werden. Wenn dies nicht ausreicht, verleihen interne Shell-Befehle wie Testing und Loop-Konstrukte den Skripten zusätzliche Leistung und Flexibilität. "
Swizzlr
Und mit „geeigneter Stelle“ Ich denke , Shell Scripting ist wirklich am besten auf Super - User diskutiert über: superuser.com/questions/tagged/shell-script
Swizzlr
-2

Für Mac ist die .sh-Datei auch als Shell-Skript bekannt

Davide
quelle
Wenn Sie es vom Finder aus aufrufen, möchten Sie es verwenden .command. .shist ein nicht behandelter Dateityp aus dem Finder (standardmäßig).
Jason Salaz