我想監視目錄中是否有更改,如果該目錄中的任何文件發生更改,那麼我想構建軟件。我怎麼能用一個shell「oneliner」來做到這一點?如何定期檢查是否有任何文件發生了變化,然後構建
我嘗試的
watch "if [ find _source -mmin -1 ]; then make; fi"
一些變化,但它不是正確的語法。
我想監視目錄中是否有更改,如果該目錄中的任何文件發生更改,那麼我想構建軟件。我怎麼能用一個shell「oneliner」來做到這一點?如何定期檢查是否有任何文件發生了變化,然後構建
我嘗試的
watch "if [ find _source -mmin -1 ]; then make; fi"
一些變化,但它不是正確的語法。
好了,所以我落得這樣做是
while inotifywait --exclude "\.(swp|~)" -qqre modify _source; do make ; done
,其中一個問題,因爲每次我打開了交換文件一個vim的文件正在觸發,我希望它只在文件更改後觸發。
還有一個問題:有誰知道我是否可以指定正則表達式來匹配我想要觸發事件的文件?例如。 *.cpp
?
正如其他建議的,使用inotifywait
(從inotify-tools
包在Ubuntu):
while inotifywait -qqre modify,create,delete,move _source;do make;done
問題與該方法是,在化妝過程的修改將不會被檢測到。 要解決這個問題,您可以運行兩個進程;第一個:
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
使用[inotifywait](http://linux.die.net/man/1/inotifywait)來監控您的目錄的活動 – user000001
[this](http://superuser.com/a/181543)回答應該幫幫我。 – devnull
但是不應該自動這樣做嗎? – Himanshu