Wie ändere ich den AppleScript-Pfad in einen Terminal-Pfad?

11

Ich habe einen benutzerdefinierten Dienst, den ich in Automater erstellt habe (ich bin unter OS X 10.6.5). Der Dienst führt ein AppleScript aus, das wiederum ein Shell-Skript ausführt. Hier ist das AppleScript:

on run {input, parameters}
    -- do shell script "/usr/bin/find " & input & " -type f -name .DS_Store -delete -print"
    display alert "Path: " & input
end run

Das Problem ist, dass der vom Dienst (in der Variablen input) übergebene Pfad wie folgt aussieht:

Macintosh HD:Users:Matthew:Documents:Programming:Apple Scripts:

Damit der Befehl ordnungsgemäß ausgeführt werden kann, muss der Pfad wie folgt aussehen:

Macintosh\ HD/Users/Matthew/Documents/Programming/Apple\ Scripts/

Gibt es also eine Möglichkeit, den ersten Pfad in den zweiten Pfad zu übersetzen? Ich hatte auf eine Kernfunktion gehofft, die dies erledigt. Aber ich nehme an, eine Art Regex / find / replace / etc würde funktionieren? Ich bin mit HTML / CSS / Javascript / PHP vertraut, nicht mit Cocoa / AppleScript / C. Jede Richtung oder Vorschläge wäre toll!

matthewpavkov
quelle

Antworten:

8

Verwenden Sie quoted form of the POSIX path of input. Ohne das quoted form ofTeil werden lustige Zeichen (wie Leerzeichen) in Dateinamen nicht korrekt behandelt. Siehe diesen Apple-Technote .

Gordon Davisson
quelle
6

Ok ... das war einfacher als ich gedacht hatte. Nach einigem googeln sieht es so aus, als ob ich hier den POSIX path ofBefehl brauche . Dadurch wird ein bestimmter Pfad in einen Pfad im Unix-Stil konvertiert. Dies ist der Pfadtyp, den Sie in Terminal sehen / verwenden würden. Damit:

POSIX path of input

Gibt mir einen Weg wie:

/Users/Matthew/Documents/Programming/Apple Scripts/

Es scheint zu berücksichtigen, dass Sie nur einen /am Anfang des Pfads und nicht den Namen der Festplatte benötigen . \Leerzeichen (oder Sonderzeichen) im Pfad werden jedoch nicht ausgeblendet. Wie in der anderen Antwort hier erwähnt, müssen Sie den Pfad in Anführungszeichen ( "oder ') setzen, damit diese Leerzeichen (oder Sonderzeichen) wörtlich interpretiert werden. Dies erreichen Sie mit quoted form of. Hier ist es:

quoted form of the POSIX path of the input
-- gives a path like: '/Users/Matthew/Documents/Programming/Apple Scripts/'
matthewpavkov
quelle
2
Am /Anfang des Pfads steht das Startvolume. Andere Festplatten sind unter/Volumes/
Josh