このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
ファイルやディレクトリをコピーする:cpコマンド:cpコマンド
cpコマンドとは
cp
コマンドは、ファイルやディレクトリをコピーするための基本的なコマンドです。ファイルのバックアップを取ったり、別の名前でファイルを保存したい場合などに使用します。ここでは、cp
コマンドの基本的な使い方やオプションについて、具体的な例を交えて解説します。
cpコマンドの基本
cp
は “copy” の略で、その名の通り、ファイルやディレクトリをコピーするためのコマンドです。コピー元とコピー先を指定することで、簡単にファイルの複製が行えます。
【書式】cp [オプション] <コピー元> … <コピー先>
- コピー元:コピーしたいファイルやディレクトリを指定します。複数指定することも可能です。
- コピー先:コピー先のファイル名やディレクトリを指定します。
cpコマンドの基本的な使い方
使用例 | 説明 |
---|---|
cp ファイル名 コピー先 | 単一のファイルを指定した場所にコピーする。 |
cp ファイル名1 ファイル名2 コピー先ディレクトリ | 複数のファイルをディレクトリにまとめてコピーする。 |
cp -i ファイル名 コピー先 | コピー先に同名のファイルがある場合、上書き確認を行う。 |
cp -r ディレクトリ名 コピー先 | ディレクトリを再帰的にコピーする。 |
基本的な例
1.作業ディレクトリに移動
user01@ubuntu:~$ cd work
user01@ubuntu:~/work$
2.ファイルをコピー file1
をfile2
という名前でコピーします。
user01@ubuntu:~/work$ touch file1
user01@ubuntu:~/work$ cp file1 file2
user01@ubuntu:~/work$ ls
file1 file2
ディレクトリへのコピー
コピー先にディレクトリを指定した場合、コピー元のファイルをそのディレクトリ内に同じファイル名でコピーします。
例として、カレントディレクトリのfile1
をdir1
というディレクトリにコピーします。
user01@ubuntu:~/work$ mkdir dir1
user01@ubuntu:~/work$ cp file1 dir1
user01@ubuntu:~/work$ ls dir1
file1
複数のファイルをディレクトリへコピー
ディレクトリ内にファイルをコピーする際、複数のファイルをまとめて指定できます。この場合、cp
コマンドは引数の最後に指定したディレクトリへファイルをコピーします。
例として、ディレクトリdir2
にfile1
、file2
、file3
の3つのファイルをコピーします。
user01@ubuntu:~/work$ touch file3
user01@ubuntu:~/work$ mkdir dir2
user01@ubuntu:~/work$ cp file1 file2 file3 dir2
user01@ubuntu:~/work$ ls dir2
file1 file2 file3
パス名展開を利用したコピー
ワイルドカード(*
)を使用して、複数のファイルを一度に指定することもできます。
例として、file
で始まるファイルをまとめてbackup_dir
にコピーします。
user01@ubuntu:~/work$ mkdir backup_dir
user01@ubuntu:~/work$ cp file* backup_dir
user01@ubuntu:~/work$ ls backup_dir
file1 file2 file3
上書きを確認するコピー
cp
コマンドは、コピー先に同名のファイルが存在する場合でも、確認なしにそのまま上書きします。
user01@ubuntu:~/work$ cp file1 file2
このため、コピー前にls
コマンドなどでコピー先に同名のファイルが存在しないか確認することが重要です。
上書き確認をしてほしい場合、-i
オプションを使用します。これにより、コピー先ファイルが存在する場合に上書きしてよいか確認されます。
user01@ubuntu:~/work$ cp -i file1 file2
cp: 'file2' を上書きしますか? y
確認時にy
またはY
(Yes)を入力すると上書きされます。
ディレクトリのコピー
cp
コマンドでディレクトリをコピーしようとすると、エラーが発生します。
user01@ubuntu:~/work$ cp dir1 dir3
cp: -r が指定されていません; ディレクトリ 'dir1' をスキップしています
ディレクトリをコピーする場合は、再帰的にコピーを行う-r
オプションを指定します。
- ディレクトリ
dir3
が存在しない場合:dir1
をdir3
という名前でコピーします。 - ディレクトリ
dir3
が既に存在する場合:dir1
をdir3
の中に、名前を変えずにコピーします。
また、-r
オプションを指定すると、コピー元ディレクトリ内のファイルやサブディレクトリもすべてコピーされます。
実行例
現在のディレクトリの内容を確認します。
user01@ubuntu:~/work$ ls -F
backup_dir/ dir1/ dir2/ file1 file2 file3
dir3
というディレクトリは存在しません。
user01@ubuntu:~/work$ ls dir1
file1
dir1
の中にはfile1
があります。
dir1
をdir3
としてコピーします。
user01@ubuntu:~/work$ cp -r dir1 dir3
user01@ubuntu:~/work$ ls dir3
file1
新しく作成されたdir3
の中にfile1
があります。
不要になったファイルとディレクトリの削除
作業が終わったら、不要になったファイルやディレクトリをパス名展開を利用して削除します。
user01@ubuntu:~/work$ rm -r backup_dir dir* file*
user01@ubuntu:~/work$ ls
user01@ubuntu:~/work$
まとめ
cp
コマンドの基本
・ファイルやディレクトリをコピーするために使用します。
・コピー元とコピー先を指定します。- ファイルのコピー
・単一ファイルのコピーや、複数ファイルのディレクトリへのコピーが可能です。
・ワイルドカードを使って複数ファイルを指定できます。 - 上書き確認
・デフォルトでは上書き確認なしでコピーします。
・-i
オプションを使うと、上書き時に確認を求めます。 - ディレクトリのコピー
・ディレクトリをコピーするには、-r
オプションが必要です。
・再帰的にコピー元のディレクトリとその中身をコピーします。
cp
コマンドは日常的によく使用するコマンドの一つです。基本的な使い方と注意点を理解して、安全かつ効率的にファイル操作を行いましょう。