OSX-Bash-Skript "Öffnen mit"

8

Ich habe ein Bash-Skript, möglicherweise sogar viele, mit dem ich Dateien im OSX-Finder öffnen möchte.

Es ist ein sehr, sehr einfaches Konzept, aber aus irgendeinem Grund sind Bash-Skripte im Finder-Dialogfeld "Öffnen mit" ausgegraut.

Ich stelle fest, dass es verschiedene Möglichkeiten gibt, Applescript oder Verpackung als App zu verwenden ... aber ich konnte nichts davon herausfinden und möchte nicht wirklich eine andere Sprache nur für diese triviale Aufgabe lernen müssen - Könnte mich jemand mit einem Löffel füttern, wie das geht?

Vielen Dank!

Reich
quelle

Antworten:

11

Es ist nicht möglich. Launch Services funktioniert mit Anwendungskennungen, und Bash-Skripte haben diese nicht.

Sie müssen eine Wrapper-Anwendung mit Automator erstellen.

  1. Starten Sie Automator
  2. Wählen Sie Anwendung
  3. Suchen Sie nach der Aktion " Shell-Skript ausführen" und fügen Sie sie rechts hinzu.
  4. Eingabe als Argumente übergeben
  5. Fügen Sie dort Ihr Skript ein
  6. Irgendwo speichern

Hier ist meine Version mit dem Growl- Befehlszeilenprogramm:

Geben Sie hier die Bildbeschreibung ein

Ergebnis:

Geben Sie hier die Bildbeschreibung ein


Sie können die Auswirkungen dieser Änderung sehen, ~/Library/Preferences/com.apple.LaunchServices.plistwenn Sie Alle ändern :

Geben Sie hier die Bildbeschreibung ein

("Test" ist der Name, den ich meiner Automator-Anwendung gegeben habe)

Daniel Beck
quelle
Vielen Dank. Ich habe es ausprobiert, aber ich versuche, es mit der von Automator erstellten App zu öffnen. Es heißt nur, dass bei der Aktion "Shell-Skript ausführen" ein Fehler aufgetreten ist. Überprüfen Sie die Eigenschaften der Aktion und versuchen Sie erneut, den Workflow auszuführen. Welches ist über die am wenigsten hilfreiche Fehlermeldung, die ich seit einiger Zeit gesehen habe!
reich
@Rich Funktioniert es mit dem Standardskript in der Aktion "Shell ausführen"? Oder auch dann nicht? Haben Sie daran gedacht, die Einstellung für die Pass-Eingabe zu ändern ? Versuchen Sie, auf Ihre Anwendung zu doppelklicken, Dateien auf Ihre Anwendung zu ziehen oder nur die zugehörige Datei zu öffnen? Was passiert, wenn Sie es anders starten?
Daniel Beck
Vielen Dank. Ich bin mir nicht sicher, wie Sie die Ausgabe von der Standardausgabe sehen würden, da sie nur cat aufruft, aber es scheint, dass dies kein Fehler war. Anstatt dass die App mein Skript von einem nicht standardmäßigen Speicherort aus aufruft, habe ich ein Skript in / usr / local / bin erstellt und dann festgestellt, dass beim Versuch, es auszuführen, zu viele Ebenen symbolischer Links (1?! ) Also habe ich das Skript stattdessen einfach dort kopiert und es scheint jetzt zu funktionieren. Vielen Dank!
Rich
1

Ich folgte den Anweisungen von Daniel Beck mit einigen Änderungen und ließ diese für URL-Dateien funktionieren, die ich in Chrome (Firefox würde auch funktionieren) auf einem Mac öffnen wollte.

Das Skript, das ich verwendet habe, ist:

sed 's/^URL=/URL=/' "$1" | grep -m 1 '^URL=' | sed 's/^URL=//' | tr -d '\r' | xargs open -a "Google Chrome"

Dadurch wird die URL = -Zeile aus einer typischen URL-Datei analysiert, die wie folgt aussieht:

[InternetShortcut]
URL=http://www.docircuits.com/pricing
IDList=
HotKey=0
IconFile=O:\Apps\Firefox\Data\profile\shortcutCache\4t0JW4mY1qRPhiYz1fY3dw==.ico
IconIndex=0

Speichern Sie das Automator-Skript an einem Ort wie Ihrem ~ / Library-Verzeichnis. Ich habe meine OpenUrl.app angerufen.

Gehen Sie nun irgendwo zu einer URL-Datei und öffnen Sie das Popup "Get Info". Ändern Sie den Befehl Öffnen mit in Ihr OpenUrl.app-Skript. Testen Sie mit nur einem oder klicken Sie auf "Alle ändern ...". Als ich das erste Mal darauf klickte, gab es einen Fehler, schien aber beim zweiten Mal zu funktionieren.

Bei der Entwicklung habe ich die Fehler "Shell-Skript ausführen" erhalten, aber das lag an tatsächlichen Fehlern im Skript. Ich denke, das Hauptproblem bei Daniels Skript ist, dass es keine Leerzeichen im Dateinamen behandelt, den Sie öffnen möchten.

Keith Olson
quelle
-1

Verwenden Sie reattach-to-user-namespaceentweder aus dem Repo oder mit brew install reattach-to-user-namespace. Dies funktioniert in Sierra, ich bin mir bei anderen Betriebssystemen nicht sicher.

Verwenden Sie es nach der Installation wie folgt im Bash-Skript:

reattach-to-user-namespace öffne a_cool_file.png

Wickedchicken
quelle
Dies scheint die Frage nicht zu beantworten. Das OP möchte die "Öffnen mit" -Funktion des Finders verwenden, um eine Datei mit einem Bash-Skript zu öffnen. Die Unterstützung der Zwischenablage unter Tmux und Screen hilft dabei nicht weiter, zumal es keinen Hinweis darauf gibt, dass Tmux oder Screen überhaupt beteiligt sind.
8bittree