Este script não usa pesquisa. Em outras palavras, não faz verificações periódicas. Em vez disso, ele usa uma ferramenta, inotifywait , projetada para monitorar as alterações no sistema de arquivos.
Nesse script, inotifywait monitora o diretório atual ( . ). Toda vez que um arquivo é criado nesse diretório, inotifywait emite seu nome e o script verifica se ele corresponde a sleep.txt . Em caso afirmativo, anuncia a criação:
[ -e sleep.txt ] || while IFS= read -r fname
do_
[ "$fname" = sleep.txt ] && break
done < <(inotifywait -m -q -e create -e moved_to --format %f .)
echo "Finally, sleep.txt now exists!!!"
Mais detalhes
As opções usadas para inotifywait têm os seguintes significados:
-
-msignifica continuar monitorando o diretório. Em outras palavras, não pare na primeira vez que algo acontecer digno de ser relatado. -
-qsignifica estar mais quieto que o normal. -
-e create -e moved_tosignifica apenas o relatório no arquivo criado ou movido para este diretório. -
--format %finforma para imprimir o nome do arquivo sempre que ocorrer um evento de criação de arquivo -
.informa qual diretório monitorar. Um período,., sempre significa o diretório atual.
Instalando inotifywait
Em sistemas semelhantes ao Debian, inotifywait faz parte de inotify-tools e pode ser instalado via:
apt-get install inotify-tools
MS Windows e OSX
inotifywait está disponível para sistemas Linux e também é executado no Cygwin.
Para ler sobre ferramentas semelhantes para o Windows, clique aqui .
Para obter informações sobre ferramentas semelhantes para o Mac OSX, clique aqui .