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/

그렇다면 첫 번째 경로를 두 번째 경로로 변환하는 방법이 있습니까? 나는 이것을 처리하는 핵심 기능을 원했습니다. 그러나 어떤 종류의 정규식 / 찾기 / 교체 등이 효과가 있다고 생각합니까? Cocoa / AppleScript / C가 아니라 HTML / CSS / Javascript / PHP에 익숙합니다. 어떤 방향이나 제안이라도 좋을 것입니다!

답변:



6

좋아 ... 이것은 내가 깨달은 것보다 쉽습니다. 인터넷 검색 후 여기에 필요한 것은 POSIX path of명령입니다. 이것은 주어진 경로를 터미널에서 보거나 사용하는 경로의 유형 인 유닉스 스타일 경로로 변환합니다. 그래서:

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/
Josh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.