¿Cómo cambiar la ruta de AppleScript a una ruta de estilo de Terminal?

11

Tengo un servicio personalizado que he creado en Automater (estoy en OS X 10.6.5). El Servicio ejecuta un AppleScript que a su vez ejecuta un script de shell. Aquí está el 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

El problema es que la ruta que pasa el Servicio (en la variable input ) se ve así:

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

Y para que el comando se ejecute correctamente, la ruta debe tener el siguiente aspecto:

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

Entonces, ¿hay una manera de traducir el primer camino al segundo camino? Esperaba una función central que maneja esto. Pero supongo que algún tipo de expresión regular / buscar / reemplazar / etc funcionaría? Estoy familiarizado con HTML / CSS / Javascript / PHP, no con Cocoa / AppleScript / C. Cualquier dirección o sugerencia sería genial!

    
pregunta matthewpavkov 14.12.2010 - 05:23

2 respuestas

6

Ok ... esto fue más fácil de lo que me había dado cuenta. Después de buscar en Google, parece que lo que necesito aquí es el comando POSIX path of . Esto convierte una ruta dada en una ruta de estilo Unix, que es el tipo de ruta que vería / usaría en la Terminal. Entonces:

POSIX path of input

Me da un camino como:

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

Parece tener en cuenta que solo necesitas un / al comienzo de la ruta, en lugar del nombre del disco duro. Sin embargo, no escapa \ espacios (o maneja caracteres especiales) en la ruta. Entonces, como lo menciona la otra respuesta aquí, debe colocar la ruta entre comillas ( " o ' ) para que esos espacios (o caracteres especiales) se interpreten literalmente. Puedes lograr esto usando quoted form of . Aquí está:

quoted form of the POSIX path of the input
-- gives a path like: '/Users/Matthew/Documents/Programming/Apple Scripts/'
    
respondido por el matthewpavkov 14.12.2010 - 05:35
8

Utilice quoted form of the POSIX path of input . Sin la parte quoted form of , no manejará correctamente los caracteres divertidos (como espacios) en los nombres de archivo. Consulte esta nota técnica de Apple .

    
respondido por el Gordon Davisson 14.12.2010 - 06:18

Lea otras preguntas en las etiquetas