Ich bin hauptsächlich ein Linux-Benutzer, der kürzlich ein MacBook Air erworben hat, und ich versuche derzeit verzweifelt herauszufinden, ob es ein Äquivalent für die Desktop-Definitionsdateien von Linux gibt, in denen Sie eine Anwendung durch ihren Befehlszeilenaufruf definieren können, mit einem optionalen Platzhalter für die Datei, die X11 an sie übergibt, wenn auf eine Datei des Dateityps, die dieser Anwendung zugeordnet ist, doppelgeklickt wird.
Unter Linux kann ich beispielsweise festlegen, .txt
dass Dateien mit einem bestimmten Befehlszeilenaufruf wie emacsclient
folgt geöffnet werden:
emacsclient -c -a "" %f
wo %f
ist der Platzhalter, der durch den Pfad zu der eigentlichen Datei ersetzt wird, auf die Sie doppelklicken. (Im Allgemeinen erlauben Ihnen Linux-Dateimanager, diese Befehlszeile im Fenster „Dateiinfo“ anzugeben.)
Gibt es eine einfache Möglichkeit, dies unter OS X zu erreichen? Ich habe versucht, mit AppleScript und Google nach einer Lösung zu basteln, aber ohne Erfolg. Ich muss wahrscheinlich noch mein Wissen und mein Vokabular über Apple-Technologie aufbauen, um die richtigen Fragen mit den richtigen Worten stellen zu können -- also bitte haben Sie Geduld mit mir ...
AppleScript ist dein Freund.
Erstellen Sie im AppleScript-Editor ein neues Skript mit dem folgenden Quellcode:
(* This script is destined to be saved as an application droplet. It will process the items dropped onto it. *)
-- This routine processes the dropped item(s)
on open theDroppedItems
repeat with i from 1 to the count of theDroppedItems
set aDroppedItem to item i of theDroppedItems
processItem(aDroppedItem)
end repeat
end open
-- This routine processes an item
on processItem(anItemToProcess)
set pathUnix to POSIX path of anItemToProcess
set pathUnixQuoted to quoted form of pathUnix
-- Here you make your shell command !
set commandToRun to "cat " & pathUnixQuoted
do shell script commandToRun
end processItem
Passen Sie für den Shell-Befehl die commandToRun
Ihren Wünschen an.
Speichern Sie das Skript. Im Speichern -Dialog:
Sehen Sie sich im Quellcode die Konstruktion an on open theDroppedItems
. Diese Art von AppleScript wird als Droplet bezeichnet . Sehen Sie sich das Symbol der Anwendung OpenItems an , die Sie gespeichert haben. Der große Pfeil darauf zeigt, dass es sich um ein Tröpfchen handelt. Das bedeutet, dass die Anwendung darauf abgelegte Gegenstände akzeptiert.
Ziehen Sie nun die gewünschte Datei per Drag-and-Drop auf die Anwendung OpenItems . Dadurch wird der Befehl mit Ihrer Datei gestartet.
Der nächste Schritt besteht darin, die Datei(en) mit dem Droplet zu verknüpfen. Wählen Sie die gewünschte Datei aus und drücken Sie Apple I ( ⌘ I ), um Informationen zu erhalten. Wählen Sie unter Öffnen mit die Anwendung OpenItems aus . Dadurch wird die Datei mit dem Droplet verknüpft. Wenn Sie also auf die Datei doppelklicken, wird die Datei mit dem Droplet OpenItems geöffnet und der Shell-Befehl für die Datei wird ausgeführt. Wenn Sie dies für alle Dateien des gleichen Typs wünschen, klicken Sie auf die Schaltfläche Alle ändern…
Ich habe diese Lösung auf Mavericks getestet. Es klappt.
Meines Wissens gibt es nichts, um ein Skript automatisch mit Doppelskript auszuführen (ich liege höchstwahrscheinlich falsch). Die beste Lösung, die ich gefunden habe, ist Automator. Es ist vorinstalliert. Sie möchten einen Dienst erstellen, der Skripte in einem Kontextmenü platziert (Rechtsklick auf Datei). Für Ihre Aktionen möchten Sie die Aktion „Run Shell Script“ finden. Von dort aus können Sie Eingaben vom Finder erhalten, z. B. Dateipfade und Verzeichnispfade. Wenn Sie die Eingabe an übergeben stdin
, ist die Variable, die Sie im Shell-Skript verwenden $@
, .
if [[ ! -d "$@" ]]
then
emacsclient -c -a "" $@;
exit
fi
Ich weiß nicht, ob dieses Skript ganz korrekt ist, aber es sollte Sie auf die richtige Spur bringen.
Nikolaus Barbulesco
Nikolaus Barbulesco
küken
foo.txt
in meinen Home-Ordner klicke, möchte ichemacsclient -c -a "" ~/foo.txt
ausgeführt werden. Aber ich glaube, ich habe eine Lösung gefunden, mit der ich zufrieden bin, Automator-Workflows zu verwenden (siehe meinen zweiten Kommentar zu Stephen S' Antwort) - abgesehen von diesem lästigen drehenden Zahnrad, das auf einen laufenden Workflow in der Ablage hinweist. Trotzdem danke!Sergej