'

Outils pour utilisateurs

Outils du site


doc:inotify-tools

inotify

Les outils fournis par inotify-tools permette de scruter les changements dans des fichiers ou des répertoires.

éditeur de texte + inotify

Quand on enregistre un fichier texte, il peut-être utile de lancer une commande. Par exemple, lancer pandoc.

Pour cela, voici un petit script que je nommerai refait qu'on lance de cette manière :

$ refait linux_rsfs.md "pandoc --write revealjs  --standalone --section-divs --css reveal.js/css/theme/night.css --css perso.css --slide-level 1 --output linux_rsfs.html"

Le premier argument est le fichier qu'on souhaite surveiller, le second entre “” est la commande à exécuter. Le premier argument sera passé à la commande exécutée.

#!/bin/bash
 
while true
do
  # inotify surveille tout le contenu du répertoire courant
  change=$(inotifywait -e close_write,moved_to,create .)
  change=${change#./ * }
  # on lance la commande uniquement si le changement concerne
  # le fichier qu'on édite
  if [ "$change" = "$1" ]
  then
    # exécution de la commande avec le nom de fichier en argument
    $2 $1
    echo "$(date) commande executée ($?)"
  fi
done

Le while est obligatoire. En effet, la plupart des éditeurs de texte n'enregistrent pas le fichier, ils en créent une copie et quand on enregistre, cette copie remplace le fichier initial. Dans ce cas, inotifywait ne peut plus surveiller le fichier (probablement à cause du inode qui change). On demande donc à inotifywait de surveiller le répertoire dans lequel on le lance et on filtre le changements avec un if.

Le script demande à être améliorer mais il rend déjà service !

doc/inotify-tools.txt · Dernière modification: Le 07/01/2015 à 23:52 (modification externe)