指定されたファイルがすでに存在する場合、cpとmv

指定されたファイルがすでに存在する場合、cpとmv

doneというファイルがすでに存在する場合は、次のコマンドを実行するとどうなりますか?

$ cp to_do done
$ mv to_do done

答え1

done内容に置き換えられますto_do

簡単なテストでこれを確認できます。

$ echo a > done
$ echo b > to_do
$ cp to_do done 
$ cat done
b

そして

$ echo a > done
$ echo b > to_do
$ mv to_do done
$ cat done
b

編集する

コメントに基づいたいくつかの追加情報

  • donedoneまたはがディレクトリの場合は置き換えられませんto_dodoneディレクトリの場合、ファイルは移動to_do/コピーされます。存在する目次。to_doディレクトリの場合は、エラーメッセージが表示されます。
  • ファイルを上書きするときに指示し、-i警告mvするオプションを使用してください。cp
  • 一部のディストリビューションでは、cpandmvはand(特にrootユーザーの場合)のエイリアスです。cp -imv -i

答え2

ここでは、次のような場合に一般ファイルについて話しているとします。

cp to_do done

書き込みできない場合は、doneエラーメッセージが表示されます。それ以外の場合、コンテンツはto_doコピーされます。超過 done。これはdone、同じinode、権限、所有権、出生時間を維持することを意味します。 (-pまたは-a一部の実装では)コピーを試みるいくつかのプロパティですto_do

そして:

cp -f to_do done

doneリンクへの書き込み権限がない場合は、リンクがcp最初に切断されdone(現在のディレクトリへの書き込み権限があり、現在のディレクトリにビットが設定されていない限り、これを行うことができます)、t新しいリンクを作成します。一つ。以前に存在しなかったように、cpできるだけ多くのプロパティをコピーしようとしています。to_dodone

そして

mv to_do done

to_do名前だけを変えました。現在のディレクトリのみが変更されます。辞書に存在する場合は、doneまず接続が解除されます。

関連情報