目次
対象読者
● 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コマンド