Wie automatisiere ich das Shell-Skript, wenn ich eine bestimmte App in OSX öffne?

1606
VEDA0095

Ich bin vor kurzem mit einem Projekt in eine Brüche geraten, das ich zu erreichen versucht habe. Mit Automator, aber ich weiß nicht genau, wie ich dieses Projekt genau angehen soll. Es gibt diese Skriptbearbeitungs-App namens Brackets, und ich möchte es so machen, dass beim Öffnen der App der Shell-Befehl tty.js ausgeführt wird. Jede Hilfe, die ich bekommen kann, wäre großartig

0

2 Antworten auf die Frage

1
EkriirkE

Sie können versuchen, in den .app-Ordner der Anwendung zu wechseln und die Binärdatei umzubenennen, indem Sie eine Skriptdatei (markierte ausführbare Datei) erstellen, die als die bisher verwendete ausführbare Datei bezeichnet wird. Diese enthält einen Verweis auf die jetzt umbenannte ausführbare Datei zusammen mit dem Skript. z.B

cd /Applications/Brackets.app/Contents/MacOS mv Brackets BracketsReal echo "tty.js" > Brackets echo "BracketsReal &" >> Brackets chmod +x Brackets 

Daraufhin sollte ein Textskript erstellt werden, das anschließend das Skript und die App startet ...

bearbeiten

Skripts im Appname.app/Contents/MacOS/Ordner werden unterstützt.

Die erste Zeile #!/bin/sh(aka shebang) ist erforderlich

Die Technik zum Verschieben der echten ausführbaren Datei und deren Ausführung aus einem Skript wird aufgerufen wrappingund wird auch von Anwendungen wie Gimp oder XQuartz (Xorg / X11) unter MacOS verwendet.

Wenn ich richtig verstehe, was der Benutzer zu erreichen versuchte, führen Bracket und die Datei automatisch öffnen tty.js, auseinander das fehlende shebang, müssen einige andere Überlegung.

Um BracketsReal richtig einzuwickeln, sollte Brackets wie folgt aussehen:

#!/bin/sh exec "$(dirname "$0")/BracketsReal" 

Das sollte so laufen, als ob wir Brackets niemals zu BracketsReal verschoben hätten.

exec ist ein integrierter Befehl der Shell

$0ist ein spezielles Argument, das vom System an das ausgeführte Shell-Skript übergeben wird. Wenn Sie es mit einem Klick ausführen, sollte der vollständige Pfad zum Skript angegeben werden:

/Applications/Brackets.app/Contents/MacOS/Brackets

dirnameist ein Shell-Befehl, der nur den Verzeichnisteil ohne Dateinamen abruft. $( )Ist eine Befehlsersetzung, wird die Zeile einmal ausgeführt:

exec /Applications/Brackets.app/Contents/MacOS/BracketsReal 

So sehr, dass wir die Anwendung aus /Applicationsanderen Ordnern verschieben können und trotzdem ausführen sollten.

An dieser Stelle sollten wir prüfen, ob BracketsReal(wahrscheinlich ein Skript selbst) Dateien als Argumente in der Befehlszeile öffnen (und, wenn eventuell eine spezielle Syntax erforderlich ist). Wenn Argumente akzeptiert werden, würde die Zeile etwa wie folgt aussehen:

exec "$(dirname "$0")/BracketsReal" "/path/to/the/file/tty.js" 

Um zu überprüfen, ob mit dem Wrapper-Skript etwas nicht stimmt, öffnen Sie einfach ein Terminal und führen den Wrapper aus. Geben Sie an der Terminal-Eingabeaufforderung Folgendes ein: / paste:

/Applications/Brackets.app/Contents/MacOS/Brackets 

Privilegien oder Syntaxfehler werden im Terminalfenster gedruckt.

Vielen Dank! Ich hatte jedoch ein Problem. Beim Ausführen dieser Befehle im Terminal wurde die Meldung "-bash:! / Bin / sh": Ereignis nicht gefunden "angezeigt, nachdem versucht wurde," echo "#! / Bin / sh"> Klammern auszuführen. VEDA0095 vor 9 Jahren 0
Aha, ok, dann diese Zeile weglassen. Bearbeiten Sie die Datei in einem Texteditor und löschen Sie diese obere Zeile. Antwort bearbeitet EkriirkE vor 9 Jahren 0
Ich habe noch ein anderes Problem. Immer wenn ich den Befehl "mv" eingebe, bekomme ich das auch "mv: Brackets in BracketsReal umbenennen: Keine solche Datei oder Verzeichnis" Ich habe keine Ahnung, was ich an dieser Stelle tun soll. VEDA0095 vor 9 Jahren 0
Ich war schon eine Weile nicht mehr unter OSX, sorry. Versuchen Sie es zunächst mit `cd / Applications / Brackets.app / Contents / MacOS` EkriirkE vor 9 Jahren 0
Es ist alles gut. Vielen Dank für all Ihre Hilfe. Leider erhalte ich diese Meldung immer dann, wenn ich versuche, die App jetzt nach den Änderungen zu öffnen. "Sie können die Anwendung" Brackets "nicht öffnen, da sie auf diesem Mac-Typ nicht unterstützt wird." VEDA0095 vor 9 Jahren 0
Grr. Um es wieder zu ändern, führen Sie folgende Schritte aus: `cd /Applications/Brackets.app/Contents/MacOS; cp BracketsReal Brackets` EkriirkE vor 9 Jahren 0
Dank der Antwort von @ EkriirkE entdeckte ich, dass Skripte unterstützt wurden. Daher wurden einige Informationen hinzugefügt. Ich bin immer noch ein Neuling in MacOS Alex vor 9 Jahren 1
0
user495470

Keyboard Maestro bietet eine Option zum Ausführen eines Makros, wenn eine Anwendung gestartet wird:

Sie können auch eine Verknüpfung zu einem Skript zuweisen wie open -a Brackets;tty.jsund verwenden Sie dann immer das Skript Klammern zu öffnen.