cp [-p] [-i|-f] [-R] [-v] [-d] [-s] [-u] FILE... DIR
cpコマンドは、FILE
に指定したファイルもしくはディレクトリをコピーします。PATH
には、コピー後のファイルもしくはディレクトリのパスを指定します。
また、単一もしくは複数のファイルのパスをFILE...
に指定して、DIR
に指定したディレクトリ内にコピーすることもできます。
- ① -p
- コピー元の所有者ID、グループID、アクセス権、最終更新日時、最終アクセス日時をコピー元と同じにしてコピーします。通常は新規に作成したのと同じになります。
- ② -i
- コピー先に同一名のファイルまたはディレクトリが存在する場合に、上書きするか否かを問い合わせます。
- ③ -f
- コピー先に同一名のファイルやディレクトリが存在しても、問い合わせなしに上書きします。
- ④ -R
- ディレクトリをコピーする場合に、ディレクトリの内容をすべてコピーします。
- ⑤ -v [Linux][FreeBSD]
- 処理内容を出力します。
- ⑥ -d [Linux]
- コピー元がリンクファイルの場合は、通常リンク先のファイル(実体)をコピーしますが、このオプションを指定した場合は、リンクファイルをコピーします。
- ⑦ -s [Linux]
- コピー元へのリンクファイルを作成します。
- ⑧ -u [Linux]
- コピー先に同一名のファイルやディレクトリが存在する場合、最終更新日付が新しくなる場合にだけ上書きします。
コピー先に同一名のファイルやディレクトリが存在する場合で、オプション「-i」と「-f」のどちらも指定しなかった場合には、UNIXによって問い合わせの有無が異なります
- ① FILE
- コピー元のファイルまたはディレクトリのパスを指定します。ワイルドカードによる指定も可能ですが、ワイルドカードを使った指定の結果はひとつのファイルまたはディレクトリを表さないといけません。
- ② PATH
- コピー先のファイルまたはディレクトリのパスを指定します。
- ③ FILE...
- 複数のコピー元のファイルのパスをスペースで区切って指定します。ワイルドカードによる指定も可能です。
- ④ DIR
- コピー先のディレクトリのパスを指定します。
FILE...
に指定したファイル群は、このディレクトリ内に元のファイル名でコピーされます。
$ ls
file01
$ cp file01 file01a
ファイル「file01」のコピーを「file01a」という名前で作成$ ls -l
合計8
-rw-rw-r-- 1 cmd cmd 32 4月11 15:13 file01
-rw-rw-r-- 1 cmd cmd 32 4月11 17:23 file01a
$
$ cp -p file01 file01b
オプション「-p」を指定して、最終更新日時などの情報を保持してコピー$ ls -l
合計12
-rw-rw-r-- 1 cmd cmd 32 4月11 15:13 file01
-rw-rw-r-- 1 cmd cmd 32 4月11 17:23 file01a
-rw-rw-r-- 1 cmd cmd 32 4月11 15:13 file01b
$
$ ls -l
合計8
-rw-rw-r-- 1 cmd cmd 32 4月11 15:13 file01
-rw-rw-r-- 1 cmd cmd 32 4月11 17:23 file01a
$ cp file01 file01a
cp: 'file01a' を上書きしてもよろしいですか(yes/no)? y
上書きするかどうかの問い合わせ$ ls -l
「y」を入力すると上書き
「n」を入力すると何もしない
合計8
-rw-rw-r-- 1 cmd cmd 32 4月11 15:13 file01
-rw-rw-r-- 1 cmd cmd 32 4月11 17:34 file01a
$cp -f file01 file01a
オプション「-f」を指定して、問い合わせなしにコピー$ ls -l
合計8
-rw-rw-r-- 1 cmd cmd 32 4月11 15:13 file01
-rw-rw-r-- 1 cmd cmd 32 4月11 17:40 file01a
$
$ ls
dir01
$ ls dir01
file11 file12
$ cp -Rv dir01 dir01a
オプション「-R」を指定して、ディレクトリの内容をすべてコピー'dir01' -> 'dir01a'
「-v」は処理内容を表示するオプション
'dir01/file11' -> 'dir01a/file11'
'dir01/file12' -> 'dir01a/file12'
$
$ ls -l
合計6
drwxrwxr-x 2 cmd cmd 4096 4月11 15:13 dir01
lrwxrwxrwx 1 cmd cmd 12 4月11 15:23 file11 -> dir01/file11
$ cp file11 file11a
$ ls -l
合計10
drwxrwxr-x 2 cmd cmd 4096 4月11 15:13 dir01
lrwxrwxrwx 1 cmd cmd 12 4月11 15:23 file11 -> dir01/file11
-rw-rw-r-- 1 cmd cmd 32 4月11 17:26 file11a
オプション「-d」を指定しなければリンク先をコピー$ cp -d file11 file11b
$ ls -l
合計14
drwxrwxr-x 2 cmd cmd 4096 4月11 15:13 dir01
lrwxrwxrwx 1 cmd cmd 12 4月11 15:23 file11 -> dir01/file11
-rw-rw-r-- 1 cmd cmd 32 4月11 17:26 file11a
lrwxrwxrwx 1 cmd cmd 12 4月11 17:30 file11b -> dir01/file11
オプション「-d」を指定するとリンクファイルをコピー$
$ ls -l
合計4
-rwxrwxrwx 1 cmd cmd 25 4月11 15:13 file01
$ cp -s file01 file01a
オプション「-s」を指定して、ファイル「file01」へのリンクファイル「file01a」を作成$ ls -l
合計8
-rw-rw-r-- 1 cmd cmd 32 4月11 15:13 file01
lrwxrwxrwx 1 cmd cmd 6 4月11 17:26 file01a -> file01
$
$ ls -l
合計8
-rw-rw-r-- 1 cmd cmd 32 4月11 15:13 file01
-rw-rw-r-- 1 cmd cmd 32 4月11 17:25 file01a
$ cp -u file01 file01a
$ ls -l
合計8
-rw-rw-r-- 1 cmd cmd 32 4月11 15:13 file01
-rw-rw-r-- 1 cmd cmd 32 4月11 17:25 file01a
既存の同名ファイルの方が新しいとコピーしない$ cp -u file01a file01
$ ls -l
合計8
-rw-rw-r-- 1 cmd cmd 32 4月11 19:27 file01
既存の同名ファイルの方が古いとコピー-rw-rw-r-- 1 cmd cmd 32 4月11 17:25 file01a
$
$ ls -l
合計20
-rwxrwxr-x 1 cmd cmd 25 4月11 15:13 file01
-rwxrwxr-x 1 cmd cmd 25 4月11 15:25 file01a
-rw-rw-r-- 1 cmd cmd 32 4月11 15:30 file02
-rw-rw-r-- 1 cmd cmd 32 4月11 15:32 file02a
-rw-rw-r-- 1 cmd cmd 39 4月11 15:58 file03
$ mkdir dir01
$ cp file01* file02 file03 dir01
複数のファイルをディレクトリ「dir01」内にコピー$ ls -l dir01
合計16
-rwxrwxr-x 1 cmd cmd 25 4月11 17:28 file01
-rwxrwxr-x 1 cmd cmd 25 4月11 17:28 file01a
-rw-rw-r-- 1 cmd cmd 32 4月11 17:28 file02
-rw-rw-r-- 1 cmd cmd 39 4月11 17:28 file03
$
本コンテンツは「UNIXコマンド辞典 ビギナー編」(2003年)を元にWeb用に再編集したものです
All Contents copyright © 2003-2009 Odyssey Communications Inc., Shoeisha Co., Ltd.