2010-07-19 16 views
5

Mi piacerebbe utilizzare Bash per eseguire automaticamente una suite di test quando salvo qualsiasi file in una determinata directory.Bash: eseguire script su file salvati?

Esiste un meccanismo per bash per eseguire un determinato script sugli eventi di salvataggio?

Grazie.

:: EDIT ::

Avrei detto che io sono sull'utilizzo di OSX.

risposta

5

Modificato: si (l'OP) menzionato si utilizza OSX. Non sono a conoscenza di strumenti simili su OSX. Esiste una chiamata di sistema di basso livello (ereditata da BSD) denominata "kqueue", ma è necessario implementare il proprio strumento a livello utente. C'è un'applicazione di esempio di Apple, chiamata "Watcher", ma è solo a prova di concetto e non fa ciò che vuoi.

C'è lo another thread su questo su Stack Overflow (anche inconcludente).

Per mancanza di uno strumento appropriato, se si sta utilizzando un linguaggio di programmazione specifico, consiglierei di cercare soluzioni già scritte per questo. In caso contrario, penso che sei bloccato a polling e la gestione dei cambiamenti da soli ...

Ecco il mio originale, risposta basato su Linux, per scopi di archiviazione:

Se stai usando Linux, si potrebbe desiderare di dai un'occhiata a inotify. Più in particolare, è possibile installare inotify-tools, che includono inotifywait.

Con esso, è possibile monitorare file e directory per un numero di eventi, ad esempio accesso, modifica, apertura, chiusura e molti altri. inotifywait può uscire una volta che è stato rilevato l'evento specificato, e così un ciclo semplice sarebbe ottenere ciò che si vuole:

while :; do 
    inotifywait -e modify /some/directory 
    run_test_suite 
done 

Tra l'altro, molti linguaggi di programmazione e ambienti hanno già i loro corridori di test continuo (per esempio, con Python puoi usare tdaemon, tra gli altri).

0

È possibile utilizzare incron per rilevare quando un file è stato chiuso.

0

Utilizzare dnotify solo se inotify non è disponibile nel sistema (kernel Linux 2.6.13 <).

dnotify è il metodo standard di Linux per guardare le directory:

http://en.wikipedia.org/wiki/Dnotify

codice di esempio. Guarda dir per le modifiche:


dnotify WATCH_DIR -M -e SCRIPT_TO_EXECUTE 

Si prega di notare SCRIPT_TO_EXECUTE verrà eseguito ogni volta, quando qualsiasi file in cambiamenti WATCH_DIR.

+2

Sede [questa FAQ] (http://inotify.aiken.cz/?section=inotify&page=faq&lang=en) (quarta questione e la pagina si collega a) . –

+0

dnotify sembra perfetto, tranne che io sono su un Mac.Scusa, avrei dovuto dirlo nel mio post. – Thomas

+0

Dovrei secondo ciò che Dennis ha indicato: non usare dnotify, usa invece inotify. – rbp