Ich verwende dieses Skript, um ein Build-Skript für Änderungen in einem Verzeichnisbaum auszuführen:
#!/bin/bash -eu
DIRECTORY_TO_OBSERVE="js" # might want to change this
function block_for_change {
inotifywait --recursive \
--event modify,move,create,delete \
$DIRECTORY_TO_OBSERVE
}
BUILD_SCRIPT=build.sh # might want to change this too
function build {
bash $BUILD_SCRIPT
}
build
while block_for_change; do
build
done
Verwendet inotify-tools
. Kreuzen Sie inotifywait
an man-Seite zum Anpassen dessen, was den Build auslöst.
Sie können es mit entr
versuchen Werkzeug, um beliebige Befehle auszuführen, wenn sich Dateien ändern. Beispiel für Dateien:
$ ls -d * | entr sh -c 'make && make test'
oder:
$ ls *.css *.html | entr reload-browser Firefox
oder drucken Sie Changed!
wenn Datei file.txt
wird gespeichert:
$ echo file.txt | entr echo Changed!
Verwenden Sie für Verzeichnisse -d
, aber Sie müssen es in der Schleife verwenden, z. B.:
while true; do find path/ | entr -d echo Changed; done
oder:
while true; do ls path/* | entr -pd echo Changed; done