GNU/Linux >> Znalost Linux >  >> Linux

Jak spustit skript shellu, když se změní soubor nebo adresář?

Tento skript používám ke spuštění sestavení skriptu na změny v adresářovém stromu:

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

Používá inotify-tools . Zaškrtněte inotifywait manuálová stránka pro přizpůsobení toho, co spouští sestavení.


Můžete zkusit entr nástroj pro spouštění libovolných příkazů při změně souborů. Příklad pro soubory:

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

nebo:

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

nebo vytiskněte Changed! když soubor file.txt je uložen:

$ echo file.txt | entr echo Changed!

Pro adresáře použijte -d , ale musíte jej použít ve smyčce, např.:

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

nebo:

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

Linux
  1. Jak spouštět příkazy při změnách souboru nebo adresáře pomocí Incron na Ubuntu

  2. Jak zkontrolovat podřetězec v Shell Script Bash?

  3. Jak spustit skript Shell na pozadí?

  1. Jak spustíte skript při přihlášení v *nix?

  2. Jak zahrnout soubor do skriptu bash shell

  3. Jak spustit skript shellu při spuštění

  1. Jak vytvořit dočasný soubor ve skriptu Shell?

  2. Jak připojit data do vyrovnávací paměti ve skriptu Shell?

  3. Jak spustit python skript na terminálu (ubuntu)?