diff --git a/logbook/aguia-pescadora-alpha/usr/local/bin/onchange.sh b/logbook/aguia-pescadora-alpha/usr/local/bin/onchange.sh new file mode 100644 index 0000000..b065bb2 --- /dev/null +++ b/logbook/aguia-pescadora-alpha/usr/local/bin/onchange.sh @@ -0,0 +1,51 @@ +#!/bin/bash +# +# Watch current directory (recursively) for file changes, and execute +# a command when a file or directory is created, modified or deleted. +# +# Written by: Senko Rasic +# +# Requires Linux, bash and inotifywait (from inotify-tools package). +# +# To avoid executing the command multiple times when a sequence of +# events happen, the script waits one second after the change - if +# more changes happen, the timeout is extended by a second again. +# +# Installation: +# chmod a+rx onchange.sh +# sudo cp onchange.sh /usr/local/bin +# +# Example use - rsync local changes to the remote server: +# +# onchange.sh rsync -avt . host:/remote/dir +# +# Released to Public Domain. Use it as you like. +# + +EVENTS="CREATE,CLOSE_WRITE,DELETE,MODIFY,MOVED_FROM,MOVED_TO" + +if [ -z "$1" ]; then + echo "Usage: $0 cmd ..." + exit -1; +fi + +inotifywait -e "$EVENTS" -m -r --format '%:e %f' . | ( + WAITING=""; + while true; do + LINE=""; + read -t 1 LINE; + if test -z "$LINE"; then + if test ! -z "$WAITING"; then + echo "CHANGE"; + WAITING=""; + fi; + else + WAITING=1; + fi; + done) | ( + while true; do + read TMP; + echo $@ + $@ + done +) \ No newline at end of file diff --git a/logbook/aguia-pescadora-bravo/usr/local/bin/onchange.sh b/logbook/aguia-pescadora-bravo/usr/local/bin/onchange.sh new file mode 100644 index 0000000..b065bb2 --- /dev/null +++ b/logbook/aguia-pescadora-bravo/usr/local/bin/onchange.sh @@ -0,0 +1,51 @@ +#!/bin/bash +# +# Watch current directory (recursively) for file changes, and execute +# a command when a file or directory is created, modified or deleted. +# +# Written by: Senko Rasic +# +# Requires Linux, bash and inotifywait (from inotify-tools package). +# +# To avoid executing the command multiple times when a sequence of +# events happen, the script waits one second after the change - if +# more changes happen, the timeout is extended by a second again. +# +# Installation: +# chmod a+rx onchange.sh +# sudo cp onchange.sh /usr/local/bin +# +# Example use - rsync local changes to the remote server: +# +# onchange.sh rsync -avt . host:/remote/dir +# +# Released to Public Domain. Use it as you like. +# + +EVENTS="CREATE,CLOSE_WRITE,DELETE,MODIFY,MOVED_FROM,MOVED_TO" + +if [ -z "$1" ]; then + echo "Usage: $0 cmd ..." + exit -1; +fi + +inotifywait -e "$EVENTS" -m -r --format '%:e %f' . | ( + WAITING=""; + while true; do + LINE=""; + read -t 1 LINE; + if test -z "$LINE"; then + if test ! -z "$WAITING"; then + echo "CHANGE"; + WAITING=""; + fi; + else + WAITING=1; + fi; + done) | ( + while true; do + read TMP; + echo $@ + $@ + done +) \ No newline at end of file