目次
対象読者
● Linuxコマンド初学者
要点
● cpコマンド = ファイルやディレクトリをコピーするコマンド
○ ファイルをコピーする際はcp {コピー元となるファイル名} {コピー先となるファイル名}の様に利用
○ ディレクトリをコピーする際はcp -r {コピー元となるディレクトリ名} {コピー先のディレクトリ}の様に利用
● ファイル名を変更せずコピーする事もファイル名を指定してコピーする事も可能
● 一度に複数ファイルのコピーも可能
cpコマンドとは?
cpコマンドは、ファイルやディレクトリの複製を作成するコマンドです。”copy”がこのコマンドの由来になっていると考えられます。
ファイルのコピー方法→ディレクトリのコピー方法の順で見ていきましょう。
ファイルのコピー方法
cpコマンドは、cp cp_test.txt ./test_directoryのようにcp {コピー元ファイル名} {コピー先ディレクトリ}という形式で利用する事で、ファイルコピーする事ができるコマンドです。
実際に手を動かして確認しましょう。まずはターミナル(Windowsの場合git bashなど)を開いてください。
事前準備
まずは準備をします。viコマンドを利用してデスクトップの階層にcp_test.txtを新規作成し、”This is cp_test.txt!”と記載ましょう。コマンドはvi cp_test.txtとなります。viコマンドでviエディタを開いたら、iを押下し編集モードにし、ファイルを編集しましょう。編集が完了したらescキー→:wq→Enterキーで保存しましょう。※viコマンドの詳細については【Linux】viコマンドとは?を参照してください。
実行したらcatコマンドで正常にファイルが作成され、中身が記載されている事を確認しましょう。

“This is cp_test.txt!”が表示されていれば、正しくコマンドを実行できています。
確認が出来たら、コピー先のディレクトリとなるtest_directoryを作成しましょう。mkdirコマンドでディレクトリを作成し、lsコマンドで正常にディレクトリが出来た事を確認しましょう。

cpコマンドの挙動確認の準備が完了です。
挙動確認
ではcpコマンドを実行してみましょう。cp_test.txtをtest_directoryの下にコピーします。
cp cp_test.txt ./test_directoryを実行しましょう。

cdコマンドでtest_directoryに移動し、lsコマンドでcp_test.txtがコピーが正しく行われたを確認した後、catコマンドでファイルの中身も適切にコピーされているか確認しましょう。

cp_test.txtがtest_directoryに作成され、内容も適切にコピーされている事が確認できます。
次にディレクトリをコピーする方法を確認しましょう。
ディレクトリのコピー方法
ディレクトリをコピーする場合は、cp -r directory_a ./directory_bのようにcp {コピーするディレクトリ名}{移動先のディレクトリ}という形式で利用します。-rオプションを付与する点がファイルのコピーと異なります。
こちらも実際に確認してみましょう。
以降で、デスクトップにparentディレクトリとchildディレクトリを作成し、parentディレクトリ配下にchildディレクトリをコピーしてみます。
事前準備
まずは事前準備です。mkdirコマンドを利用してデスクトップの階層にparentディレクトリとchildディレクトリを新規作成しましょう。コマンドはmkdir parent, mkdir childとなります。実行したらlsコマンドで正常にファイル作成が完了しているか確認しましょう。

正しく2つのディレクトリが作成されました。次にchildディレクトリの下にcp_test.txtを作成しましょう。こちらを作成する事で、childディレクトリをコピーした際にディレクトリ配下のファイルも正しくコピーされているかが確認できます。cdコマンドでchildディレクトリに移動し、touch cp_test.txtでファイルを作成しましょう。作成したらlsコマンドでファイルの作成が出来ている事を確認します。

準備が完了しました。実際に動作を確認してみましょう。
挙動確認
cpコマンドでparentディレクトリの下にchildディレクトリ以下をコピーしましょう。コマンドはcp -r child ./parentとなります。

cdコマンドでparentディレクトリへ移動した後、lsコマンドでchildディレクトリがコピーされたか確認してみます。

parentディレクトリにchildディレクトリが作成されている事が分かります。childディレクトリの中のcp_test.txtまでコピーされているか確認しましょう。
cdコマンドでchildディレクトリに移動した後、lsコマンドでファイルを確認しましょう。

childディレクトリにcp_test.txtが正常にコピーされている事が確認できました。cpコマンドでのディレクトリの移動が成功しました。
cpコマンドでは、コピー先に配置するファイルのファイル名を指定する事も可能です。以降でファイル名を指定してコピーする方法を紹介します。
ファイル名/ディレクトリ名を指定したコピー
ファイル名を指定してコピーするには、cp test.txt ./parent/test_changed.txtの様にcp {ファイル名} {コピー先のディレクトリ}/{コピー後のファイル名}のようになります。ディレクトリの場合は、cpの後に-rオプションを指定しましょう。
以降でデスクトップに作成したtest.txtをparentディレクトリの下にtest_changed.txtと名前を指定してコピーしましょう。
事前準備
デスクトップにviコマンドでtest.txtを作成し、”This file is for testing!”と記載しましょう。作成できたらcatコマンドで作成が正しく出来ているか確認します。

挙動確認
名前を指定してコピーしてみましょう。コマンドはcp test.txt ./parent/test_changed.txtとなります。

lsコマンドでparentディレクトリに移動し、lsコマンドでファイルがtest_changed.txtという名前でコピーされたかを確認し、catコマンドでファイルの中身がコピーされている事を確認しましょう。

ファイル名がtest_changed.txtに変更され、内容は適切にコピーされた事が確認できました。
またcatコマンドでは、ファイルやディレクトリを複数指定してコピーする事も可能です。
コマンドはcp fileA.txt fileB.txt ./testの様に、cp {コピーしたいファイル1} {コピーしたいファイル2} {コピー先}となります。
【次の記事】
sedコマンド