Comment changer le chemin AppleScript en un chemin de style terminal?

11

J'ai un service personnalisé que j'ai créé dans Automater (je suis sous OS X 10.6.5). Le Service exécute un AppleScript qui à son tour exécute un script shell. Voici l'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

Le problème est que le chemin passé par le service (dans la variable input) ressemble à:

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

Et pour que la commande s'exécute correctement, le chemin doit ressembler à:

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

Alors, existe-t-il un moyen de traduire le premier chemin vers le deuxième chemin? J'espérais une fonction de base qui gère cela. Mais je suppose qu'une sorte de regex / find / replace / etc fonctionnerait? Je connais HTML / CSS / Javascript / PHP, pas Cocoa / AppleScript / C. Toute direction ou suggestion serait formidable!

matthewpavkov
la source

Réponses:

8

Utilisez quoted form of the POSIX path of input. Sans la quoted form ofpartie, il ne gérera pas correctement les caractères drôles (comme les espaces) dans les noms de fichiers. Voir cette note technique Apple .

Gordon Davisson
la source
6

Ok ... c'était plus facile que je ne l'avais imaginé. Après quelques recherches sur Google, il semble que ce dont j'ai besoin ici soit la POSIX path ofcommande. Cela convertit un chemin donné en un chemin de style Unix, qui est le type de chemin que vous verriez / utiliseriez dans Terminal. Donc:

POSIX path of input

Me donne un chemin comme:

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

Il semble prendre en compte que vous avez juste besoin d'un /au début du chemin, plutôt que du nom du disque dur. Cependant, il n'échappe pas aux \espaces (ni ne gère les caractères spéciaux) dans le chemin. Ainsi, comme l'autre réponse mentionne ici, vous devez placer le chemin entre guillemets ( "ou ') afin que ces espaces (ou caractères spéciaux) soient interprétés littéralement. Vous accomplissez cela en utilisant quoted form of. C'est ici:

quoted form of the POSIX path of the input
-- gives a path like: '/Users/Matthew/Documents/Programming/Apple Scripts/'
matthewpavkov
la source
2
Le /début du chemin est le volume de démarrage. Les autres disques durs sont sous/Volumes/
Josh