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에 익숙합니다. 어떤 방향이나 제안이라도 좋을 것입니다!
답변
사용하십시오 quoted form of the POSIX path of input
. quoted form of
부분이 없으면 파일 이름의 공백과 같은 재미있는 문자를 올바르게 처리하지 못합니다. 이 Apple 기술 노트를 참조하십시오 .
답변
좋아 … 이것은 내가 깨달은 것보다 쉽습니다. 인터넷 검색 후 여기에 필요한 것은 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/'