Unixでmvコマンドが完了するのを待つ方法は?

Unixでmvコマンドが完了するのを待つ方法は?

一部のファイルを圧縮し、コマンドを使用して圧縮ファイルを別のディレクトリに移動し、元の場所 mvからすべてのファイルを削除する必要があります。しかし、私の場合、rmコマンドが実行される前にコマンドが実行され、コマンドがmv失敗しました。mv

次のことを試しましたが、役に立ちませんでした。

方法1:

$ zip -r foo.zip * &;  wait %1 && mv foo.zip mydir &; wait %1 && rm -rf *

方法2:

[ zip -r foo.zip *] || {mv foo.zip mydir && rm -rf *}

ベストアンサー1

あなたは仕事を複雑にします。

zipシャットダウン時にシャットダウン状態に成功または失敗が反映されている場合は、単に次のことを実行できます。

$ zip -r foo.zip . && mv foo.zip mydir && rm -rf *

しかし、私はmydirそれが現在のディレクトリにないことを本当に望んでいます。それ以外の場合rm -rf *。一般的に使用するときは、最後に他のものを追加するrm -rf前に2〜3回考えてください!*!実際、私はrm -rf *昨年これをした回数を片手で数えることができます()。私はそれを台本に入れません。

より安全なアプローチ(mydir実際には現在のディレクトリ以外のパスへのパスであると仮定):

$ zip -r --move --test foo.zip . && mv foo.zip mydir

でも

$ zip -r --move --test mydir/foo.zip .

.代わりに(ドット)を使用してください*。名前が最初の文字であるすべての*ファイルは、次の名前のファイルを生成してコマンドライン切り替えとして解釈されます。-zip--encrypt

$ touch -- --encrypt
$ zip -r --move --test ../test.zip *
Enter password:

$ rm -- --encrypt

おすすめ記事