Mac OS X에서 파일 변경시 스크립트 실행


8

누구나 Mac OS 용 프로그램에 대해 이름을 실행 파일과 볼 파일로 전달하여 감시 대상 파일이 변경 될 때마다 실행 파일을 실행할 수 있다는 것을 알고 있습니까?

나는 이것을 염두에두고있다 :

$ fwatch /Users/foo/doc.tex /Users/foo/run-pdflatex.sh &
  fwatch running. Listening for changes in /Users/foo/doc.tex.
$ echo "This aint no LaTeX" > doc.tex
$ fwatch: Change in /Users/foo/doc.tex detected. Running /Users/foo/run-pdflatex.sh...

답변:


6

launchd 를 사용하여이를 설정할 수 있습니다 . 특히, 시작된 plist에서 watchpaths 키 를 사용하여 해당 파일의 변경 사항을 찾아야합니다.

이 AFP548 기사 에서 사용할 수있는 전체 정보 .

더 이상 개발되지 않은 것처럼 보이지만 Lingon 은 이러한 시작된 plist 파일을 설정하는 GUI 방법을 제공하는 응용 프로그램입니다.

편집하다:

대략, 위의 샘플 경로를 사용하여 수행 할 작업은 다음과 같습니다. com.superuser.run-pdflatex.plist다음 내용이 포함 된 파일 을~/Library/LaunchAgents

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
    <string>com.superuser.run-pdflatex</string>
    <key>OnDemand</key>
    <true/>
    <key>Program</key>
    <string>/Users/foo/run-pdflatex.sh</string>
    <key>ProgramArguments</key>
    <array>
            <string>run-pdflatex.sh</string>
    </array>
    <key>WatchPaths</key>
    <array>
            <string>/Users/foo/doc.tex</string>
    </array>
    </dict>
</plist>

그런 다음 launchctl load ~/Library/LaunchAgents/com.superuser.run-pdflatex.plist터미널에 입력 하여 파일 감시 데몬을로드합니다.

위는 테스트되지 않았지만 일반적인 아이디어입니다.


2

Automator에서 할 수 있습니다. 내가 생각하는 자동화 워크 플로우의 폴더 옵션 아래에 있습니다 (Mac이 아닌). 그런 다음 스크립트를 폴더에 연결하기 만하면 파일이 추가 / 변경 될 때마다 실행됩니다.


나는 따라갈 수 없다. 저는 Automator를 처음 사용하지만 스크립트를 실행할시기를 선택할 수없고 스크립트를 실행할 때 수행 할 작업 만 선택할 수 있습니다. Mac OS에는 사용할 수있는 폴더 동작이 있지만 AppleScript에는 "폴더 항목을 추가 할 때"만 있고 "폴더 항목을 변경할 때"만있는 것으로 생각했습니다.
Johannes

당신은 올바른 @Johannes입니다. 폴더 항목 추가, 폴더 항목 제거, 폴더 창 이동, 폴더 창 닫기 및 폴더 열기에 대한 폴더 조치가 있지만 파일 변경을 감지하기위한 폴더 조치는 없습니다. Applescript 편집기에서 StandardAdditions.osax 사전을 열어서이를 확인할 수 있습니다.
ghoppe
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.