GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo ejecutar un script de shell cuando cambia un archivo o directorio?

Uso este script para ejecutar un script de compilación sobre los cambios en un árbol de directorios:

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

Usa inotify-tools . Marque inotifywait página de manual sobre cómo personalizar lo que desencadena la compilación.


Puedes probar entr herramienta para ejecutar comandos arbitrarios cuando los archivos cambian. Ejemplo para archivos:

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

o:

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

o imprime Changed! cuando el archivo file.txt se guarda:

$ echo file.txt | entr echo Changed!

Para directorios use -d , pero tienes que usarlo en el bucle, por ejemplo:

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

o:

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

Linux
  1. ¿Cómo crear un archivo temporal en Shell Script?

  2. ¿Cómo agregar datos al búfer en el script de Shell?

  3. ¿Cómo verificar la subcadena en Shell Script Bash?

  4. ¿Cómo ejecutar un script de Shell en segundo plano?

  5. ¿Cómo se ejecuta un script al iniciar sesión en * nix?

Cómo ejecutar el comando / secuencia de comandos de Linux Shell en segundo plano

Cómo ejecutar Shell Script como servicio Systemd en Linux

Cómo ejecutar Shell Script como servicio SystemD en Linux

Cómo verificar si existe un archivo o directorio en Bash Shell

Cómo crear y ejecutar un script de shell en Ubuntu 22.04

Cómo ejecutar un archivo sin extensión .sh en shell