A maneira mais limpa é ilustrada em esta entrada de blog :
inotifywait -m -r -q --format '%w' bootstrap/ | while read FILE
do
echo "something happened on path $FILE"
done
Por isso, estou fazendo um simples loop inotifywait
para observar as alterações em um diretório do Bootstrap:
while inotifywait -r -q --format %w bootstrap/; do
echo "something happened"
[[ $filename == *.js ]] && uglifyjs .....
[[ $filename == *.less ]] && lessc bootstrap.less
done
Você realmente não precisa se preocupar com os internos, mas eu simplesmente não consigo colocar o nome do arquivo novamente em um escopo básico. inotifywait
echos fora do nome do arquivo (com ajuda do argumento format) mas como capturar isso e usá-lo mais tarde (no meu caso, como $filename
)?
Se você quiser um equipamento de teste simples e curto:
touch testfile
while inotifywait testfile do; echo "..."; done
Você pode executar touch testfile
quando quiser acioná-lo.
A maneira mais limpa é ilustrada em esta entrada de blog :
inotifywait -m -r -q --format '%w' bootstrap/ | while read FILE
do
echo "something happened on path $FILE"
done
Acontece que eu precisava apenas reestruturar o while
para que eu capturasse a saída de inotifywait
:
while true; do
echo "something happened"
filename=$(inotifywait -r -q --format %w bootstrap/)
[[ $filename == *.js ]] && uglifyjs .....
[[ $filename == *.less ]] && lessc bootstrap.less
done
Ainda estou curioso para saber se existem maneiras mais limpas de fazer isso.
Tags command-line scripts inotify