Linux

【Linux】cpコマンドとは?

  • このエントリーをはてなブックマークに追加



対象読者

● 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.txttest_directoryの下にコピーします。
cp cp_test.txt ./test_directoryを実行しましょう。

cp_file_result

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

cp_result2

cp_test.txttest_directoryに作成され、内容も適切にコピーされている事が確認できます。
次にディレクトリをコピーする方法を確認しましょう。

ディレクトリのコピー方法

ディレクトリをコピーする場合は、cp -r directory_a ./directory_bのようにcp {コピーするディレクトリ名}{移動先のディレクトリ}という形式で利用します。-rオプションを付与する点がファイルのコピーと異なります。

こちらも実際に確認してみましょう。
以降で、デスクトップにparentディレクトリとchildディレクトリを作成し、parentディレクトリ配下にchildディレクトリをコピーしてみます。

事前準備

まずは事前準備です。mkdirコマンドを利用してデスクトップの階層にparentディレクトリとchildディレクトリを新規作成しましょう。コマンドはmkdir parent, mkdir childとなります。実行したらlsコマンドで正常にファイル作成が完了しているか確認しましょう。

cp_prep

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

cp_child

準備が完了しました。実際に動作を確認してみましょう。

挙動確認

cpコマンドでparentディレクトリの下にchildディレクトリ以下をコピーしましょう。コマンドはcp -r child ./parentとなります。

dir_copy

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

parent_under

parentディレクトリにchildディレクトリが作成されている事が分かります。childディレクトリの中のcp_test.txtまでコピーされているか確認しましょう。

cdコマンドでchildディレクトリに移動した後、lsコマンドでファイルを確認しましょう。

cp_succeeded

childディレクトリにcp_test.txtが正常にコピーされている事が確認できました。cpコマンドでのディレクトリの移動が成功しました。

cpコマンドでは、コピー先に配置するファイルのファイル名を指定する事も可能です。以降でファイル名を指定してコピーする方法を紹介します。

ファイル名/ディレクトリ名を指定したコピー

ファイル名を指定してコピーするには、cp test.txt ./parent/test_changed.txtの様にcp {ファイル名} {コピー先のディレクトリ}/{コピー後のファイル名}のようになります。ディレクトリの場合は、cpの後に-rオプションを指定しましょう。

以降でデスクトップに作成したtest.txtparentディレクトリの下にtest_changed.txtと名前を指定してコピーしましょう。

事前準備

デスクトップにviコマンドでtest.txtを作成し、”This file is for testing!”と記載しましょう。作成できたらcatコマンドで作成が正しく出来ているか確認します。

cp_specify_name

挙動確認

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

cp_name_changed

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

file_change_result

ファイル名がtest_changed.txtに変更され、内容は適切にコピーされた事が確認できました。

またcatコマンドでは、ファイルやディレクトリを複数指定してコピーする事も可能です。

コマンドはcp fileA.txt fileB.txt ./testの様に、cp {コピーしたいファイル1} {コピーしたいファイル2} {コピー先}となります。

【次の記事】
sedコマンド

  • このエントリーをはてなブックマークに追加

お問い合わせ

    このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシー利用規約が適用されます。

    コメントを残す

    *