GNU/Linux >> Tutoriels Linux >  >> Linux

Comment exécuter un script shell lorsqu'un fichier ou un répertoire change ?

J'utilise ce script pour exécuter un script de construction sur les changements dans une arborescence de répertoire :

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

Utilise inotify-tools . Vérifiez inotifywait page de manuel pour savoir comment personnaliser ce qui déclenche la construction.


Vous pouvez essayer entr outil pour exécuter des commandes arbitraires lorsque les fichiers changent. Exemple de fichiers :

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

ou :

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

ou écrivez Changed! quand fichier file.txt est enregistré :

$ echo file.txt | entr echo Changed!

Pour les répertoires, utilisez -d , mais vous devez l'utiliser dans la boucle, par exemple :

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

ou :

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

Linux
  1. Comment exécuter des commandes sur les changements de fichier ou de répertoire avec Incron sur Ubuntu

  2. Comment vérifier la sous-chaîne dans Shell Script Bash?

  3. Comment exécutez-vous un script lors de la connexion dans * nix ?

  4. Comment exécuter un script python sur un terminal (ubuntu) ?

  5. impossible d'exécuter un fichier binaire lors de la tentative d'exécution d'un script shell sous Linux

Comment exécuter une commande / un script Linux Shell en arrière-plan

Comment exécuter un script Shell en tant que service Systemd sous Linux

Comment exécuter un script Shell en tant que service SystemD sous Linux

Comment vérifier si un fichier ou un répertoire existe dans Bash Shell

Comment créer et exécuter un script shell dans Ubuntu 22.04

Comment exécuter automatiquement un script lorsque le contenu d'un répertoire change sous Linux ?