mv
同じ名前のディレクトリを持つ宛先にディレクトリを移動できません。
$ mv fortran/ imperative_PLs/
mv: cannot move ‘fortran/’ to ‘imperative_PLs/fortran’: Directory not empty
この場合、なぜ
mv
動作しないのですか?システムコールで説明できますかmv
? (比較できますrsync
)mv
この場合、デザインが機能しないのはなぜですか?その理由やポイントは何ですか?
ベストアンサー1
mv
そしてrsync
同様のプログラムではありません。特に、mv
単にオブジェクトの名前を変更しようとするのが一般的です。同じファイルシステムにある場合、内容はまったくコピーされません。
まだ実行していない場合は、imperative_PLs/fortran
既存のmv
ディレクトリfortran
を使用してツリー内の対応するポイントに名前が変更されます。
ただし、その場所にはすでにディレクトリ(コンテンツを含む)があります。名前は単一のオブジェクトのみを参照できるため、既存のディレクトリを削除するか名前を変更する必要があります。 mv
何もしたくなくて中断したとしましょう。
rsync
代わりに、個々のファイルとその中の他のコンテンツをコピーしてfortran
既存のimperative_PLs/fortran
ディレクトリに配置します。
むしろ、rename
この行動は理解しやすく見えます。