ディレクトリをコピーするときにこの複合コマンドがエラーを報告するのはなぜですか?

ディレクトリをコピーするときにこの複合コマンドがエラーを報告するのはなぜですか?

次のように、1行に次の2つのコマンドを実行すると:

rm -rf dir ; cp -r dir2 dir

cpがディレクトリを作成できないことを返すことができますdir/subdir。ファイルが存在します。

ただし、これら2つのコマンドを2行で実行するとエラーは発生しません。違いが何なのか知りたいです。さらに重要なことは、2行と同じ効果で1行に2つのコマンドを実行する方法です。

編集:私はそれをcp -r dir2 dirdirdir2

答え1

説明が不要なソリューション

100%確かではありません。なぜこれが起こります。しかし、これはBashが次に引数を拡張する方法や時期に関連していると思われます。CP。しかし、修正するのは簡単です。 -aフラグを追加するだけです。たとえば、

rm -rf dir; cp -a dir2 dir

これは私のシステムでうまく機能し、エラーは報告されません。証拠として:

$ set -x; rm -rf dir; cp -a dir2 dir; ls
+ rm -rf dir
+ cp -a dir2 dir
dir  dir2

関連情報