GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara menjalankan skrip Shell ketika file atau direktori berubah?

Saya menggunakan skrip ini untuk menjalankan skrip pembangunan pada perubahan di pohon direktori:

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

Menggunakan inotify-tools . Periksa inotifywait halaman manual untuk cara menyesuaikan apa yang memicu build.


Anda dapat mencoba entr alat untuk menjalankan perintah sewenang-wenang ketika file berubah. Contoh untuk file:

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

atau:

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

atau cetak Changed! ketika file file.txt disimpan:

$ echo file.txt | entr echo Changed!

Untuk direktori gunakan -d , tetapi Anda harus menggunakannya dalam loop, mis.:

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

atau:

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

Linux
  1. Cara menjalankan perintah pada perubahan File atau Direktori dengan Incron di Ubuntu

  2. Bagaimana Cara Menambahkan Data Ke Buffer Dalam Script Shell?

  3. Bagaimana Cara Memeriksa Substring Di Shell Script Bash?

  1. Bagaimana Membuat File Sementara Di Shell Script?

  2. Dari Mana Skrip Shell Dijalankan?

  3. Bagaimana Cara Menjalankan Script Shell Di Latar Belakang?

  1. Cara menjalankan skrip Python dari shell

  2. Bagaimana Anda menjalankan skrip saat login di * nix?

  3. Cara memasukkan file dalam skrip bash shell