Как изменить путь AppleScript на путь в стиле терминала?

11

У меня есть пользовательский сервис, который я создал в Automater (у меня OS X 10.6.5). Служба выполняет AppleScript, который, в свою очередь, выполняет сценарий оболочки. Вот 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

Проблема в том, что путь, переданный службой (в переменной input), выглядит следующим образом:

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

И для правильного выполнения команды путь должен выглядеть следующим образом:

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

Итак, есть ли способ перевести первый путь на второй путь? Я надеялся на основную функцию, которая справится с этим. Но я предполагаю, что какое-то регулярное выражение / найти / заменить / и т. Д. Подойдет? Я знаком с HTML / CSS / Javascript / PHP, а не с Cocoa / AppleScript / C. Любое направление или предложения будут великолепны!

matthewpavkov
источник

Ответы:

8

Использование quoted form of the POSIX path of input. Без quoted form ofчасти он не будет правильно обрабатывать забавные символы (например, пробелы) в именах файлов. Смотрите этот технот Apple .

Гордон Дэвиссон
источник
6

Хорошо ... это было проще, чем я думал. После некоторого поиска в Google, похоже, мне нужна POSIX path ofкоманда. Это преобразует данный путь в путь в стиле Unix, который является типом пути, который вы видите / используете в Терминале. Так:

POSIX path of input

Дает мне путь как:

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

Кажется, нужно учитывать, что /в начале пути вам нужен только знак , а не имя жесткого диска. Однако он не экранирует \пробелы (или не обрабатывает специальные символы) в пути. Итак, как упоминается в другом ответе, вам нужно поместить путь в кавычки ( "или '), чтобы эти пробелы (или специальные символы) интерпретировались буквально. Вы делаете это с помощью quoted form of. Вот:

quoted form of the POSIX path of the input
-- gives a path like: '/Users/Matthew/Documents/Programming/Apple Scripts/'
matthewpavkov
источник
2
В /начале пути указан загрузочный том. Другие жесткие диски под/Volumes/
Джош