GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguire uno script di shell quando un file o una directory cambia?

Uso questo script per eseguire uno script di compilazione sui cambiamenti in un albero di directory:

#!/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

Utilizza inotify-tools . Seleziona inotifywait pagina man per come personalizzare ciò che attiva la compilazione.


Puoi provare entr strumento per eseguire comandi arbitrari quando i file cambiano. Esempio per i file:

$ ls -d * | entr sh -c 'make && make test'

oppure:

$ ls *.css *.html | entr reload-browser Firefox

oppure stampa Changed! quando il file file.txt viene salvato:

$ echo file.txt | entr echo Changed!

Per le directory usa -d , ma devi usarlo nel ciclo, ad esempio:

while true; do find path/ | entr -d echo Changed; done

oppure:

while true; do ls path/* | entr -pd echo Changed; done

Linux
  1. Come creare un file temporaneo nello script della shell?

  2. Come aggiungere i dati al buffer nello script della shell?

  3. Da dove viene eseguito uno script di shell?

  4. Come includere un file in uno script di shell bash

  5. Come eseguire lo script Python sul terminale (ubuntu)?

Come eseguire il comando / script della shell di Linux in background

Come eseguire lo script della shell come servizio Systemd in Linux

Come eseguire lo script della shell come servizio SystemD in Linux

Come verificare se esiste un file o una directory in Bash Shell

Come creare ed eseguire uno script di shell in Ubuntu 22.04

Come eseguire automaticamente uno script quando il contenuto di una directory cambia in Linux?