Linux, コマンド · 1 min read · Sep 19, 2025

初心者のためのLinux cpコマンドチュートリアル(8つの例)

Linuxに不慣れな方にとって、コマンドラインは非常に強力なツールであり、グラフィカルインターフェースを通じて行えるほぼすべてのタスクを実行できることを知っておく価値があります。しかし、実際には、コマンドラインで単純なタスクを行うことが多いでしょう。そのような単純なタスクの1つは、ファイルやディレクトリをコピーすることです。

Linuxのcpコマンドは、コマンドラインを通じてファイルやディレクトリをコピーする力を提供します。このチュートリアルでは、理解しやすい例を使ってこのツールの基本的な使い方について説明します。しかし、その前に、この記事で言及されているすべての例/指示は、Ubuntu 16.04LTSでテストされていることを共有しておく価値があります。

Linux cpコマンド

コマンドラインでコピー操作を実行する必要がある場合、cpがあなたの頼りになるコマンドです。そのマニュアルページによると、このツールはファイルとディレクトリの両方をコピーするために使用できます。コマンドの一般的な構文は次のとおりです:

cp [OPTION]... SOURCE DEST

上記のコマンドは、SOURCEをDESTにコピーします。以下のQ&A形式の例は、このツールの動作をよりよく理解するのに役立ちます。

Q1. 基本的なコピー操作を実行するには?

cpの基本的な使い方は非常に簡単です。あなたがしなければならないのは、ソースと宛先を指定することだけです。たとえば、次のコマンドは、現在の作業ディレクトリにある’file1’をデスクトップディレクトリにコピーします:

cp file1 ~/Desktop

Q2. cpが上書きする前にプロンプトを表示するには?

ファイルをコピーしている宛先に同じ名前のファイルがすでに存在する場合、cpコマンドは既存のファイルを静かに上書きします。しかし、上書きする前にプロンプトを表示させたい場合は、-iオプションを使用してインタラクティブモードでcpを実行できます。

たとえば:

cp -i file1 ~/Desktop/

上のスクリーンショットに示されているように、 -i オプションは、cpに宛先ディレクトリ内の同じ名前の既存のファイルを上書きするかどうかをユーザーに尋ねさせます。

Q3. cpが既存のファイルを上書きしないようにするには?

場合によっては、cpが既存のファイルを上書きしないようにしたいことがあります。また、前のセクションで説明したインタラクティブオプションを有効にしたくない場合もあります。このような状況では、-nコマンドラインオプションを使用できます。

たとえば:

cp -n file1 ~/Desktop/

-nは-iオプションを上書きすることに注意してください。つまり、-iを-nと一緒に使用しても、コマンドはインタラクティブモードでは実行されません。

Q4. cpを使用してディレクトリをコピーするには?

デフォルトでは、cpコマンドはファイルにのみ機能します。ディレクトリをコピーしようとすると、「cp: omitting directory」というエラーが表示されることがあります。したがって、ディレクトリをコピーする必要がある場合は、-rコマンドラインオプションを使用してください。

たとえば:

cp -r dir ~/Desktop

Q5. cpコマンドを使用してシンボリックリンクを作成するには?

必要に応じて、cpにファイルを実際にコピーするのではなく、シンボリックリンクを作成するように指示することもできます。これは、-sコマンドラインオプションを使用して行うことができます。

たとえば:

cp -s ~/htf-daily/file1 ~/Desktop/

Q6. cpがソースが新しい場合のみ宛先ファイルを上書きするようにするには?

場合によっては、ソースファイルが新しい場合にのみ既存のファイルを上書きする必要があります。このプロセスをファイルの更新と考えてください。これは、-uコマンドラインオプションを使用して実行できます。

たとえば、現在の作業ディレクトリにある’file1’をデスクトップディレクトリにコピーしたいが、宛先にはすでに’file1’という名前のファイルがあるとします。そして、ソースが宛先よりも新しい場合にのみコピーしたいとします。これは、次のコマンドを使用して実行できます:

cp -u file1 ~/Desktop

Q7. cpがソースのシンボリックリンクを追跡しないようにするには?

デフォルトでは、cpコマンドはソースのシンボリックリンクを追跡します。これは、たとえば、別のファイルへのシンボリックリンクであるファイルをコピーしようとすると、デフォルトではシンボリックリンクが指すファイルに対してコピーアクションが行われることを意味します。つまり、~/Desktop/file1~/htf-daily/file1へのシンボリックリンクであり、~/Desktop/file1~/Downloadsにコピーしようとすると、~/htf-daily/file1がそこにコピーされます。

ただし、シンボリックリンク自体をコピーする必要がある場合は、-Pコマンドラインオプションを使用してcpにソースのシンボリックリンクを追跡しないように指示できます。したがって、私たちの場合、コマンドは次のようになります:

cp -P ~/Desktop/file1 ~/Downloads/

Q8. ファイル属性のみをコピーするには?

場合によっては、ファイルの内容ではなく、属性(所有権やタイムスタンプなど)のみをコピーする必要があることがあります。これは、–attributes-onlyコマンドラインオプションと–preserveオプションを組み合わせて使用することで実現できます。

たとえば、file1には次の属性があります:

-rw-rw-r-- 1 root himanshu 97 Jun 14 17:18 file1

そして、file2には次の属性があります:

-rw-rw-r-- 1 root himanshu 179 May 25 15:09 file2

*注意:ファイルの属性を取得するには、lsコマンドを使用できます。lsに関する詳細情報は、こちらを参照してください。*

そして、file2の属性をコピーしてfile1にも持たせる必要がある場合、次のように実行できます:

cp --attributes-only --preserve file2 file1

以下は、前述のコマンドの実行例です:

結論

あなたも同意するように、cpコマンドの基本的な使い方はそれほど難しくはありません。このチュートリアルでは、最も便利なコマンドラインオプションのほとんどをカバーしようとしました。あなたの側で試してみて、その後、ツールのマニュアルページに移動して、コマンドが提供する他の機能/オプションを確認してください。疑問や質問がある場合は、下にコメントを残してください。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。