Wie richte ich ein Shell-Skript ein, das vom Mac OSX-Dock ausgeführt werden soll? Es scheint, dass durch einfaches Erstellen einer Verknüpfung die Datei in meinem Editor geöffnet wird. Gibt es ein Flag, das ich irgendwo setzen muss, damit es ausgeführt wird, anstatt es zur Bearbeitung zu öffnen?
160
Antworten:
Sie können einen Automator-Workflow mit einem einzigen Schritt erstellen: "Shell-Skript ausführen".
Dann
File > Save As
, und das Dateiformat ändern zu „Anwendung“. Wenn Sie die Anwendung öffnen, wird der Shell-Skript-Schritt ausgeführt, der Befehl ausgeführt und nach Abschluss beendet.Der Vorteil hierbei ist , es ist wirklich einfach zu tun , und Sie können sehr leicht von Benutzereingaben ( zum Beispiel der Auswahl einer Reihe von Dateien), dann gibt sie an den Eingang des Shell - Skript (entweder auf stdin, oder als Argumente) erhalten.
(Automator ist in Ihrem
/Applications
Ordner!)quelle
open -a SomeAppThing.app --args --etc=2
, sollte sie sich konzentrieren. Alternativ können Sie es mit Applescript (zBosascript -e 'tell application "Google Chrome" to activate'
) fokussierenWenn Sie kein Terminalfenster benötigen, können Sie jede ausführbare Datei zu einer Anwendung machen, indem Sie einfach ein Shell-Skript erstellen
Example
und in den Dateinamen verschiebenExample.app/Contents/MacOS/Example
. Sie können diese neue Anwendung wie jede andere in Ihrem Dock platzieren und mit einem Klick ausführen.HINWEIS: Der Name der App muss genau mit dem Skriptnamen übereinstimmen. Das Verzeichnis der obersten Ebene muss also sein
Example.app
und das Skript imContents/MacOS
Unterverzeichnis muss benannt seinExample
und das Skript muss ausführbar sein.Wenn das Terminalfenster angezeigt werden muss, habe ich keine einfache Lösung. Sie könnten wahrscheinlich etwas mit Applescript machen, aber das ist nicht sehr sauber.
quelle
example.sh.app
, nicht nurexample.app
. Sie erhalten eine Warnung über beschädigte App, wenn diese nicht übereinstimmen.app
und mit dieser Struktur endet , wird er als ausführbare Anwendung behandelt. Wenn Sie den Inhalt dieses Ordners im Finder anzeigen möchten, müssen Sie mit der rechten Maustaste darauf klicken und "Paketinhalt anzeigen" auswählen (da ein Doppelklick darauf die Anwendung ausführen würde). Im Terminal scheint es sich nur um einen Ordner zu handeln. (Ich bin nicht sicher, ob Sie mit Finder den Ordner selbst in .app umbenennen können. Möglicherweise müssen Sie die Umbenennung im Terminal vornehmen.)Unter OSX Mavericks:
Machen Sie Ihr Shell-Skript ausführbar:
Benennen Sie Ihr Skript um, um ein
.app
Suffix zu erhalten:Benennen Sie Ihr Skript wieder in ein
.sh
Suffix um:Wenn Sie nun im Dock auf das Skript klicken, wird ein Terminalfenster geöffnet, in dem Sie Ihr Skript ausführen können.
Bonus: Um das Terminal nach Abschluss Ihres Skripts zu schließen, fügen Sie
exit 0
am Ende hinzu und ändern Sie die Terminaleinstellungen so, dass "die Shell geschlossen wird, wenn sie sauber beendet wird", wie in dieser SO-Antwort angegeben .quelle
Ich weiß, dass dies alt ist, aber falls es für andere hilfreich ist:
Wenn Sie ein Skript ausführen müssen und möchten, dass das Terminal angezeigt wird, damit Sie die Ergebnisse sehen können, die Sie wie in Abyss Knight angegeben ausführen können, und die Erweiterung in .command ändern können. Wenn Sie darauf doppelklicken, wird ein Terminalfenster geöffnet und ausgeführt.
Ich brauchte dies jedoch, um von Automator oder AppleScript ausgeführt zu werden. Damit dies ein neues Terminal öffnet, war der Befehl, den ich über "Shell-Skript ausführen" ausführte, "myShellScript.command öffnen" und wurde in einem neuen Terminal geöffnet.
quelle
Solange Ihr Skript ausführbar ist und keine Erweiterung hat, können Sie es unverändert auf die rechte Seite (Dokumentseite) des Docks ziehen. Wenn Sie darauf klicken, wird es in einem Terminalfenster ausgeführt, anstatt einen Editor zu öffnen.
Wenn Sie eine Erweiterung (wie foo.sh) haben möchten, können Sie im Finder zum Dateiinfofenster die Standardanwendung für dieses bestimmte Skript ändern (TextEdit, TextMate, unabhängig davon, für welche Standardeinstellung auf Ihrem Computer festgelegt wurde) .sh-Dateien) an Terminal. Es wird dann einfach ausgeführt, anstatt in einem Texteditor geöffnet zu werden. Auch hier müssen Sie es auf die rechte Seite des Docks ziehen.
quelle
Ich denke, dieser Thread kann hilfreich sein: http://forums.macosxhints.com/archive/index.php/t-70973.html
Um es zu paraphrasieren, können Sie es mit der Erweiterung .command umbenennen oder ein AppleScript erstellen, um die Shell auszuführen.
quelle
Wie Joe bereits erwähnt hat, wird dies durch Erstellen des Shell-Skripts und anschließendes Erstellen eines Applescript-Skripts zum Aufrufen des Shell-Skripts erreicht. Dies ist sehr praktisch.
Shell-Skript
Erstellen Sie Ihr Shell-Skript in Ihrem bevorzugten Texteditor, zum Beispiel:
mono "/Volumes/Media/~Users/me/Software/keepass/keepass.exe"
(Dadurch wird die ausführbare Datei w32 unter Verwendung des Mono-Frameworks ausgeführt.)
Shell-Skript speichern, für mein Beispiel "StartKeepass.sh"
Apple Script
Öffnen Sie den AppleScript-Editor und rufen Sie das Shell-Skript auf
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
- Applescript-Befehl zum Aufrufen externer Shell-Befehle"sh ...."
- Dies ist Ihr Shell-Skript (vollständiger Pfad), das in Schritt 1 erstellt wurde (Sie können auch direkte Befehle ausführen. Ich könnte das Shell-Skript weglassen und hier einfach meinen Mono-Befehl ausführen.)user name
- erklärt zu Applescript, dass Sie den Befehl als bestimmter Benutzer ausführen möchten"<enter username here>
- Ersetzen Sie durch Ihren Benutzernamen (Anführungszeichen) ex "josh"password
- erklärt, Ihr Passwort zu appleskriptieren"<enter password here>"
- Ersetzen Sie durch Ihr Passwort (Anführungszeichen) ex "mypass"with administrative privileges
- erklärt, dass Sie als Administrator ausgeführt werden möchtenErstellen Sie Ihre .APP
Speichern Sie Ihr Applescript als filename.scpt, in meinem Fall RunKeepass.scpt
Speichern Sie als ... Ihr Applescript und ändern Sie das Dateiformat in Anwendung, was in meinem Fall zu RunKeepass.app führt
Kopieren Sie Ihre App-Datei in Ihren Apps-Ordner
quelle
Im Skript-Editor:
do shell script "/full/path/to/your/script -with 'all desired args'
""Als Anwendungspaket speichern.
Solange Sie nur die Wirkung des Skripts erzielen möchten, funktioniert dies einwandfrei. Sie werden weder STDOUT noch STDERR sehen.
quelle
Jemand schrieb ...
quelle