シェルでファイルの作成と削除を待つのに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 $
色々なファイルシステムで試してみると面白いかもしれません。