GNU/Linux >> Linux の 問題 >  >> Linux

ファイルまたはディレクトリが変更されたときにシェルスクリプトを実行する方法は?

このスクリプトを使用して、ディレクトリ ツリーの変更に対してビルド スクリプトを実行します:

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

inotify-tools を使用 . inotifywait をチェック ビルドをトリガーするものをカスタマイズする方法については、man ページを参照してください。


entr を試すことができます ファイルが変更されたときに任意のコマンドを実行するツール。ファイルの例:

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

または:

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

または Changed! を出力 ファイル file.txt の場合 保存されます:

$ echo file.txt | entr echo Changed!

ディレクトリには -d を使用します 、ただし、ループ内で使用する必要があります。例:

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

または:

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

Linux
  1. UbuntuのIncronでファイルまたはディレクトリの変更に対してコマンドを実行する方法

  2. シェルスクリプトはどこから実行されますか?

  3. シェルからPythonスクリプトを実行する方法

  1. シェルスクリプトで一時ファイルを作成するにはどうすればよいですか?

  2. * nixでログイン時にスクリプトを実行するにはどうすればよいですか?

  3. Linuxでディレクトリの内容が変更されたときにスクリプトを自動的に実行する方法は?

  1. シェルスクリプトでバッファにデータを追加する方法は?

  2. シェルスクリプトBashでサブストリングをチェックする方法は?

  3. バックグラウンドでシェルスクリプトを実行する方法は?