このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

ファイルやディレクトリをコピーする:cpコマンド:cpコマンド

cpコマンドとは

 cpコマンドは、ファイルやディレクトリをコピーするための基本的なコマンドです。ファイルのバックアップを取ったり、別の名前でファイルを保存したい場合などに使用します。ここでは、cpコマンドの基本的な使い方やオプションについて、具体的な例を交えて解説します。

cpコマンドの基本

 cpは “copy” の略で、その名の通り、ファイルやディレクトリをコピーするためのコマンドです。コピー元とコピー先を指定することで、簡単にファイルの複製が行えます。

【書式】
cp [オプション] <コピー元> … <コピー先>

  • コピー元:コピーしたいファイルやディレクトリを指定します。複数指定することも可能です。
  • コピー先:コピー先のファイル名やディレクトリを指定します。
cpコマンドの基本的な使い方
使用例説明
cp ファイル名 コピー先単一のファイルを指定した場所にコピーする。
cp ファイル名1 ファイル名2 コピー先ディレクトリ複数のファイルをディレクトリにまとめてコピーする。
cp -i ファイル名 コピー先コピー先に同名のファイルがある場合、上書き確認を行う。
cp -r ディレクトリ名 コピー先ディレクトリを再帰的にコピーする。
cpコマンドの基本的な使い方

基本的な例

1.作業ディレクトリに移動
user01@ubuntu:~$ cd work
user01@ubuntu:~/work$
2.ファイルをコピー file1file2という名前でコピーします。
user01@ubuntu:~/work$ touch file1
user01@ubuntu:~/work$ cp file1 file2
user01@ubuntu:~/work$ ls
file1  file2

ディレクトリへのコピー

 コピー先にディレクトリを指定した場合、コピー元のファイルをそのディレクトリ内に同じファイル名でコピーします。

例として、カレントディレクトリのfile1dir1というディレクトリにコピーします。

user01@ubuntu:~/work$ mkdir dir1
user01@ubuntu:~/work$ cp file1 dir1
user01@ubuntu:~/work$ ls dir1
file1

複数のファイルをディレクトリへコピー

 ディレクトリ内にファイルをコピーする際、複数のファイルをまとめて指定できます。この場合、cpコマンドは引数の最後に指定したディレクトリへファイルをコピーします。

例として、ディレクトリdir2file1file2file3の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が存在しない場合dir1dir3という名前でコピーします。
  • ディレクトリdir3が既に存在する場合dir1dir3の中に、名前を変えずにコピーします。

また、-rオプションを指定すると、コピー元ディレクトリ内のファイルやサブディレクトリもすべてコピーされます。

実行例

現在のディレクトリの内容を確認します。

user01@ubuntu:~/work$ ls -F
backup_dir/  dir1/  dir2/  file1  file2  file3

dir3というディレクトリは存在しません。

user01@ubuntu:~/work$ ls dir1
file1

dir1の中にはfile1があります。

dir1dir3としてコピーします。

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コマンドは日常的によく使用するコマンドの一つです。基本的な使い方と注意点を理解して、安全かつ効率的にファイル操作を行いましょう。