シェルでファイルの作成と削除を待つのにinotify-toolsを使います。
インストール
aptでインストールします。
$ sudo apt install -y inotify-tools
ファイルの作成と削除を待つ
waitfile.shに指定した引数のファイルが作成されるのをfilewaitで待ちます。
その後、そのファイルが削除されるのをrmwaitで待ちます。
$ cat waitfile.sh
#! /bin/bash
fname=$1
filewait()
{
ret=1
while [ $ret == 1 ]
do
inotifywait -q -e create -t 1 . | grep $fname
ret=$?
done
}
rmwait()
{
ret=1
while [ $ret == 1 ]
do
inotifywait -q -e delete -t 1 . | grep $fname
ret=$?
done
}
echo waiting for $fname
filewait
echo $fname created!, waiting for $fname remove
rmwait
$
notifywaitの動作
最初は、よくわからず下記のようににファイルを指定してcreateイベントを待とうとしましたが、ファイルがないとNo such fileとなります。
$ inotifywait -e create fin.txt Setting up watches. Couldn't watch fin.txt: No such file or directory $
ファイルがあると永遠に待ちます。
$ inotifywait -e create fin.txt Setting up watches. Watches established.
ディレクトリを指定すると次のようになります。
実行後に別の端末からfin.txtを作成すると./CREATE fin.txtが発生します。
$ inotifywait -e create . Setting up watches. Watches established. ./ CREATE fin.txt $
色々なファイルシステムで試してみると面白いかもしれません。