ファイルのコピー
cp コマンドには以下の3通りの書き方があります。
1. | cp [-i] file1 file2 |
2. | cp [-i] file... dir |
3. | cp -r dir1 dir2 |
-i オプションを与えると、コピーする際に同名のファイルが既に存在し、コピーすることによって上書きされて元の内容がなくなってしまうような場合に実行してよいかどうか問い合わせを行います。
これに y と答えると実行し、それ以外の入力であれば実行しません。
1. の書き方では、 file1 は file2 に単にコピーされます。
2. の書き方では、(もし複数書けば複数の) file は、 dir のすぐ下に元のファイル名でコピーされます。
3. の書き方では、 dir1 以下のファイルを全て含めてディレクトリごと dir2 のすぐ下に元のファイル名、ディレクトリ名でコピーされます。
dir2 が存在しないとそれを作成して、 dir1 以下のファイルを全て dir2 のすぐ下に元のファイル名、ディレクトリ名でコピーされます。
例えば log ファイルを memo ディレクトリ以下に同じく log という名前でコピーする場合、以下のようなさまざまな表現ができます。
カレントディレクトリ | 書き方 | コマンド記述 |
yasuda | 1. | cp log memo/log |
yasuda | 2. | cp log memo |
memo | 1. | cp ../log log |
memo | 1. | cp ../log ./log |
memo | 2. | cp ../log . |
例えば sample ファイルを Unix ディレクトリ以下に同じく sample という名前でコピーする場合、以下のようなさまざまな表現ができます。
カレントディレクトリ | 書き方 | コマンド記述 |
yasuda | 1. | cp memo/sample Unix/log |
yasuda | 2. | cp memo/sample Unix |
memo | 1. | cp sample ../Unix/sample |
memo | 2. | cp sample ../Unix |
例えば memo ディレクトリをツリーごと Unix ディレクトリ以下にコピーする場合、以下のようになります。
(今度は書き方は 3. しかありません。)
カレントディレクトリ | コマンド記述 |
yasuda | cp -r memo Unix |
memo | cp -r ../memo ../Unix (どういうわけか cp -r . ../Unix は駄目なのです) |
Unix | cp -r ../memo . |
この結果、ディレクトリ・ツリーは以下のようになります。
コピー後のディレクトリ・ツリー