Come cambiare il percorso AppleScript in un percorso in stile Terminale?


11

Ho un servizio personalizzato che ho creato in Automater (sono su OS X 10.6.5). Il servizio esegue un AppleScript che a sua volta esegue uno script di shell. Ecco 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

Il problema è che il percorso passato dal servizio (nella variabile input) è simile a:

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

E affinché il comando venga eseguito correttamente, il percorso deve apparire come:

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

Quindi, c'è un modo per tradurre il primo percorso nel secondo percorso? Speravo in una funzione chiave che gestisse questo. Ma suppongo che qualche tipo di regex / find / sostituisca / etc funzionerebbe? Conosco HTML / CSS / Javascript / PHP, non con Cocoa / AppleScript / C. Qualsiasi direzione o suggerimento sarebbe fantastico!

Risposte:



6

Ok ... è stato più facile di quanto pensassi. Dopo un po 'di Google, sembra che ciò di cui ho bisogno qui sia il POSIX path ofcomando. Questo converte un determinato percorso in un percorso in stile Unix, che è il tipo di percorso che vedresti / utilizzeresti in Terminal. Così:

POSIX path of input

Mi dà un percorso come:

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

Sembra tenere conto del fatto che hai solo bisogno di un /all'inizio del percorso, piuttosto che il nome del disco rigido. Tuttavia, non sfugge agli \spazi (o gestisce caratteri speciali) nel percorso. Quindi, come menzionato nell'altra risposta, è necessario inserire il percorso tra virgolette ( "o ') affinché tali spazi (o caratteri speciali) vengano interpretati alla lettera. Puoi farlo usando quoted form of. Ecco qui:

quoted form of the POSIX path of the input
-- gives a path like: '/Users/Matthew/Documents/Programming/Apple Scripts/'

2
/L'all'inizio del percorso è il volume di avvio. Altri dischi rigidi sono sotto/Volumes/
Josh
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.