J'ai un fichier appelé file1 que je veux dans un script, chaque fois qu'il y a un changement, faites quelque chose, un bip en fait. Comment je fais ça?
8
J'ai un fichier appelé file1 que je veux dans un script, chaque fois qu'il y a un changement, faites quelque chose, un bip en fait. Comment je fais ça?
Si vous avez inotify-tools
installé (du moins c'est le nom du paquet sur Debian) quand vous pouvez faire quelque chose comme ceci:
while inotifywait -q -e modify filename >/dev/null; do
echo "filename is changed"
# do whatever else you need to do
done
Cela attend que l'événement "modifier" arrive au fichier nommé "nom de fichier". Lorsque cela se produit, la inotifywait
commande sort filename MODIFY
(que nous rejetons en envoyant la sortie à / dev / null) puis se termine, ce qui entraîne la saisie du corps de la boucle.
Lisez la page de manuel inotifywait
pour plus de possibilités.
while
. Notez également que ce qu'un humain considère comme une "modification" peut ne pas toujours fonctionner: cela interceptera un ajout par exemple, mais il n'attrapera pas un éditeur tel quevim
(le fichier regardé est renommé ou échangé avec une sauvegarde), niperl -i
(sur place) edit) qui remplace le fichier par un nouveau. Une fois que l'un de ces événements se produit,inotifywait
il ne reviendra jamais. Regarder un inode et regarder un nom de fichier ne sont pas tout à fait la même chose, donc cela dépend du cas d'utilisation.move_self
les captures seront renommées. Voir la page de manuel pour la liste complète des événements.Sans inotifywait, vous pouvez utiliser ce petit script et un travail cron (toutes les minutes environ):
la source
Je suis venu à la recherche d'une doublure sur MacOS. Réglé sur ce qui suit. Compilé et ajouté cet outil à mon chemin. Cela a pris moins de 30 secondes.
Ensuite, je suis allé dans le répertoire dans lequel je souhaitais faire la veille. Dans ce cas, je souhaitais regarder un fichier de démarque pour les changements, et si changé, éditez a
make
.C'est ça.
la source
brew install kqwait
et vous pouvez lui transmettre plusieurs fichiers commekqwait **/*
Vous n'avez probablement pas besoin de comparer md5sum si vous disposez de l'utilitaire diff.
le ! nie par exemple vrai si la déclaration est fausse
Attention, vous avez besoin du fichier d'origine pour comparer avec diff qui (imo) est identique à ce que fait le script md5sum ci-dessus.
la source
diff -q
, si lediff
supporte.-q
signifie "signaler si seuls les fichiers diffèrent", et non en quoi ils diffèrent. Arrête donc dediff -q
comparer le moment où une différence est observée, ce qui peut être très utile en termes de performances. Voir la documentation GNU , par exemple. Si tout le point de votre réponse est efficace en n'utilisant pasmd5sum
, alors ne pas utiliserdiff -q
si disponible est en train de vaincre ce point.Vous pouvez essayer l'
entr
outil de ligne de commande, par exemplela source
entr
doit être installé ou du moins c'est le cas pour Ubuntu. Il devrait cependant être présent dans la plupart des référentiels distor.si vous vérifiez les modifications dans un dépôt git, vous pouvez utiliser:
la source
une.
cp orginalfile fileneedto_be_changed
'(Besoin de faire une seule fois)b.
la source