Bagaimana cara mengubah jalur AppleScript ke jalur bergaya Terminal?

11

Saya memiliki Layanan khusus yang saya buat di Automater (Saya menggunakan OS X 10.6.5). Layanan mengeksekusi AppleScript yang pada gilirannya mengeksekusi skrip shell. Inilah 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

Masalahnya adalah, jalur yang dilewati oleh Layanan (dalam variabel input) terlihat seperti:

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

Dan agar perintah dapat dijalankan dengan benar, jalan harus terlihat seperti:

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

Jadi, apakah ada cara untuk menerjemahkan jalur pertama ke jalur kedua? Saya berharap untuk fungsi inti yang menangani ini. Tapi saya kira semacam regex / find / replace / etc akan bekerja? Saya kenal dengan HTML / CSS / Javascript / PHP, bukan dengan Cocoa / AppleScript / C. Arahan atau saran apa pun akan luar biasa!

matthewpavkov
sumber

Jawaban:

8

Gunakan quoted form of the POSIX path of input. Tanpa quoted form ofbagian, itu tidak akan menangani karakter lucu (seperti spasi) dalam nama file dengan benar. Lihat teknik Apple ini .

Gordon Davisson
sumber
6

Ok ... ini lebih mudah dari yang saya sadari. Setelah beberapa Googling, sepertinya yang saya butuhkan di sini adalah POSIX path ofperintah. Ini mengonversi lintasan yang diberikan ke lintasan gaya Unix, yang merupakan jenis lintasan yang akan Anda lihat / gunakan di Terminal. Begitu:

POSIX path of input

Memberi saya jalan seperti:

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

Tampaknya memperhitungkan bahwa Anda hanya perlu a /di awal jalan, daripada nama hard drive. Namun, itu tidak lolos dari \spasi (atau menangani karakter khusus) di jalur. Jadi, seperti jawaban lain di sini menyebutkan, Anda perlu menempatkan path dalam tanda kutip ( "atau ') agar ruang-ruang (atau karakter khusus) ditafsirkan secara harfiah. Anda menyelesaikan ini dengan menggunakan quoted form of. Ini dia:

quoted form of the POSIX path of the input
-- gives a path like: '/Users/Matthew/Documents/Programming/Apple Scripts/'
matthewpavkov
sumber
2
Di /awal jalur adalah volume boot. Hard drive lain berada di bawah/Volumes/
Josh