Come modificare 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 ) assomiglia a:

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

E per il comando da eseguire correttamente, il percorso deve essere simile a:

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

Quindi, c'è un modo per tradurre il primo percorso per il secondo percorso? Speravo in una funzione di base che gestisca questo. Ma suppongo che una sorta di regex / find / replace / etc possa funzionare? Conosco HTML / CSS / Javascript / PHP, non con Cocoa / AppleScript / C. Qualsiasi direzione o suggerimento sarebbe fantastico!

    
posta matthewpavkov 14.12.2010 - 05:23
fonte

2 risposte

6

Ok ... questo è stato più facile di quanto avessi capito. Dopo un po 'su Google, sembra che quello che mi serve qui sia il comando POSIX path of . Converte un determinato percorso in un percorso di stile Unix, che è il tipo di percorso che vedresti / userai in Terminal. Quindi:

POSIX path of input

Forniscimi un percorso come:

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

Sembra che tu abbia appena bisogno di un / all'inizio del percorso, piuttosto che del nome del disco rigido. Tuttavia, non sfugge \ spazi (o gestisce caratteri speciali) nel percorso. Quindi, come menziona l'altra risposta qui, è necessario posizionare il percorso tra virgolette ( " o ' ) affinché questi spazi (o caratteri speciali) vengano interpretati letteralmente. Lo fai usando quoted form of . Eccolo:

quoted form of the POSIX path of the input
-- gives a path like: '/Users/Matthew/Documents/Programming/Apple Scripts/'
    
risposta data 14.12.2010 - 05:35
fonte
8

Utilizza quoted form of the POSIX path of input . Senza la parte quoted form of , non gestirà correttamente i caratteri divertenti (come gli spazi) nei nomi dei file. Vedi questa tecnologia Apple .

    
risposta data 14.12.2010 - 06:18
fonte

Leggi altre domande sui tag