2013-08-20 1 views
0

변경을 위해 디렉토리를 모니터링하고 해당 디렉토리의 파일이 변경되면 소프트웨어를 작성하고 싶습니다. 쉘 "oneliner"로 어떻게 할 수 있습니까? 주기적으로 파일이 변경되었는지 확인하고 빌드하는 방법

나는

watch "if [ find _source -mmin -1 ]; then make; fi"

의 몇 가지 변화를 시도했지만 그것은 올바른 구문이 아닙니다.

while inotifywait -qqre modify,create,delete,move _source;do make;done 

문제이 방법 메이크 과정에서 변형이 검출 될 수 없다는 것이다 :

다른 제안 같이
+4

[inotifywait] (http://linux.die.net/man/1/inotifywait)을 사용하여 디렉토리의 활동을 모니터링하십시오. – user000001

+3

[this] (http://superuser.com/a/181543) 대답해야 함 도움. – devnull

+1

하지만 자동으로 그렇게하기로되어 있지 않습니까? – Himanshu

답변

0

확인은 문제가 때마다 나는 열 때문에

while inotifywait --exclude "\.(swp|~)" -qqre modify _source; do make ; done 

스왑 파일입니다 vim이 빌드를 트리거하는 파일이고 파일 변경 후에 만 ​​트리거되도록하고 싶었습니다.

한 가지 더 질문 : 정규식을 지정하여 이벤트를 트리거하려는 파일을 일치시킬 수 있는지 알 수 있습니까? 예 : *.cpp?

1

inotifywait (우분투 패키지 inotify-tools에서)를 사용한다. 이 문제를 해결하기 위해 두 가지 프로세스를 실행할 수 있습니다. 첫 번째 :

while inotifywait -qqre modify,create,delete,move _source;do touch trigger;done 

그리고 다른 하나 : 내가하고 결국 무엇 때문에

while inotifywait -qqre create trigger 
do while [ -f trigger ] 
    do rm trigger; make 
    done 
done 
관련 문제