
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
編集する
コメントに基づいたいくつかの追加情報
done
done
またはがディレクトリの場合は置き換えられませんto_do
。done
ディレクトリの場合、ファイルは移動to_do
/コピーされます。存在する目次。to_do
ディレクトリの場合は、エラーメッセージが表示されます。- ファイルを上書きするときに指示し、
-i
警告mv
するオプションを使用してください。cp
- 一部のディストリビューションでは、
cp
andmv
はand(特にrootユーザーの場合)のエイリアスです。cp -i
mv -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_do
done
そして
mv to_do done
to_do
名前だけを変えました。現在のディレクトリのみが変更されます。辞書に存在する場合は、done
まず接続が解除されます。