見たいmydirectory/
私はそれを作成inot.sh
し、バックグラウンドで実行しました# ./inot.sh &
inot.sh
これが私が試したスクリプトの最初のバージョンです:
#!/bin/bash
inotifywait -m -e create,modify --exclude '\*.swp?$' . |
while read dir ev file; do
cp "$file" inotfiles/"$file"
done
注:excludeパターンはvimスワップファイルを除外することになっていますが、まだ機能していないようです。
ファイルが作成(または変更)された場合は、ファイル全体をストレージフォルダーにコピーします。create,modify
今のところ、私は何かを正しく動作させることができるかどうかを確認することに焦点を当てています。
この時点で、FTPアップロードは正しく機能しているようです。コマンドラインを使用しtouch
てファイルに、空のファイルをコピーします。しかし、それをvim
編集するために使用すると、多くの問題が発生します。
vimで既存のファイルを編集しましたが、変更しませんでした。ファイルを入力すると、次のようになります。
cp: cannot stat `.zzzzzoo.txt.swx': No such file or directory
~
~
~
~
~
最初の行はファイルの一部のように見えますが、そうではありません。これは、vimビューアに干渉するinotifyです。終了すると、すべてが正常に見えます。
しかしcp
、vimの終了時に同じエラーメッセージが表示されることがあります。
ファイルを編集してファイルへの書き込みを終了すると、次のようになります。
vimを終了すると、次のようになります。
~
~
~
~
~
~
"zzzzzoo.txt" cp: cannot stat `4913': No such file or directory
"zzzzzoo.txt" 1L, 11C written
[root@server mydirectory]# cp: cannot stat `.zzzzzoo.txt.swp': No such file or direc
tory
チルダの最初の部分はvimからです。
"somefile.txt" cp: cannot stat `4913': No such file or directory
"somefile.txt" 7L, 129C written
編集:私が言及するのを忘れているもう1つのエラーを追加する
コピーしたファイルをvimで開くと、vimが同じファイル名のスワップファイルを見つけたという通知が表示されます。
E325: ATTENTION
Found a swap file by the name "inotfiles/.somefile.txt.swp"
などなど。
Swap file "inotfiles/.somefile.txt.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:
//編集されたセクションを終了します
したがって、vimスワップファイルを適切に除外することでこの問題を修正できる可能性があることはわかっていますが、より大きな質問は「なぜcpエラーがstdoutになるのか、そしてそれらを停止する方法」であるように思われます。おそらくどこか別の場所にパイプする必要があります。
また、無限のwhileループを防ぐ方法も必要です。そのセクションを書く他の方法はありますか?