AppleScriptパスをターミナルスタイルのパスに変更する方法は?


11

Automaterで作成したカスタムサービスがあります(OS X 10.6.5を使用しています)。サービスはAppleScriptを実行し、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/

だから、最初のパスを2番目のパスに変換する方法はありますか?これを処理するコア機能を期待していました。しかし、ある種の正規表現/検索/置換/などが機能すると思いますか?Cocoa / AppleScript / Cではなく、HTML / CSS / Javascript / PHPに精通しています。どんな方向性や提案も素晴らしいでしょう!

回答:



6

わかりました...これは私が思っていたよりも簡単でした。グーグルで調べた後、ここで必要なのは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/'

2
/パスの先頭には、ブートボリュームです。他のハードドライブは下にある/Volumes/
ジョシュ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.