GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie führe ich ein Shell-Skript aus, wenn sich eine Datei oder ein Verzeichnis ändert?

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

Linux
  1. Wie erstelle ich eine temporäre Datei im Shell-Skript?

  2. Wie überprüfe ich die Teilzeichenfolge in Shell Script Bash?

  3. Wie führe ich ein Shell-Skript im Hintergrund aus?

  4. So führen Sie Python-Skripte von der Shell aus

  5. So schließen Sie eine Datei in ein Bash-Shell-Skript ein

So führen Sie einen Linux-Shell-Befehl / ein Skript im Hintergrund aus

So führen Sie Befehle für Datei- oder Verzeichnisänderungen mit Incron unter Ubuntu aus

So führen Sie Shell-Skript als Systemd-Dienst in Linux aus

So führen Sie Shell-Skript als SystemD-Dienst in Linux aus

So überprüfen Sie, ob eine Datei oder ein Verzeichnis in der Bash-Shell vorhanden ist

So erstellen und führen Sie ein Shell-Skript in Ubuntu 22.04 aus