Jak zmienić ścieżkę AppleScript na ścieżkę w stylu terminalu?

11

Mam niestandardową usługę, którą utworzyłem w Automater (korzystam z systemu OS X 10.6.5). Usługa wykonuje AppleScript, który z kolei wykonuje skrypt powłoki. Oto 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

Problem polega na tym, że ścieżka przekazana przez usługę (w zmiennej input) wygląda następująco:

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

Aby polecenie wykonało się poprawnie, ścieżka musi wyglądać następująco:

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

Czy istnieje sposób na przetłumaczenie pierwszej ścieżki na drugą? Miałem nadzieję na podstawową funkcję, która to obsługuje. Ale przypuszczam, że zadziałałoby jakieś wyrażenie regularne / find / replace / etc? Znam HTML / CSS / JavaScript / PHP, a nie Cocoa / AppleScript / C. Wszelkie wskazówki lub sugestie byłyby świetne!

Matthewpavkov
źródło

Odpowiedzi:

8

Zastosowanie quoted form of the POSIX path of input. Bez tej quoted form ofczęści nie obsługuje poprawnie zabawnych znaków (takich jak spacje) w nazwach plików. Zobacz tę notatkę Apple .

Gordon Davisson
źródło
6

Ok ... to było łatwiejsze niż się spodziewałem. Po jakimś czasie Google wygląda na to, że potrzebuję tutaj POSIX path ofpolecenia. Konwertuje to daną ścieżkę na ścieżkę stylu uniksowego, która jest typem ścieżki, którą zobaczysz / użyjesz w Terminalu. Więc:

POSIX path of input

Daje mi ścieżkę:

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

Wydaje się, że bierze się pod uwagę, że potrzebujesz tylko /na początku ścieżki, a nie nazwy dysku twardego. Nie zmienia jednak \odstępów (ani nie obsługuje znaków specjalnych) na ścieżce. Tak więc, jak wspomniano w innej odpowiedzi tutaj, musisz umieścić ścieżkę w cudzysłowie ( "lub '), aby spacje (lub znaki specjalne) były interpretowane dosłownie. Dokonujesz tego za pomocą quoted form of. Oto on:

quoted form of the POSIX path of the input
-- gives a path like: '/Users/Matthew/Documents/Programming/Apple Scripts/'
Matthewpavkov
źródło
2
Na /początku ścieżki jest wolumin rozruchowy. Inne dyski twarde są /Volumes/
niedokładne