ファイルの作成やファイルの閲覧ができるようになったところで、続いてはファイルをコピーしていきましょう。WindowsのエクスプローラーやmacOSのFinderなどでもコピーして別の場所で貼り付けなどをよく行うと思います。 もちろんLinuxでもコマンドでファイルやディレクトリのコピーができるので、cpコマンドを理解して使えるようになりましょう。 もちろんcpはcopyの略です。

cpコマンド(ファイル・ディレクトリコピー)

3年以上前に更新されました。情報が古い可能性があります。
更新日 : 2019年09月11日

ファイルの作成やファイルの閲覧ができるようになったところで、続いてはファイルをコピーしていきましょう。WindowsのエクスプローラーやmacOSのFinderなどでもコピーして別の場所で貼り付けなどをよく行うと思います。

もちろんLinuxでもコマンドでファイルやディレクトリのコピーができるので、cpコマンドを理解して使えるようになりましょう。

もちろんcpcopyの略です。

cpコマンドの使い方

ファイルやディレクトリのコピー時にcpコマンドを利用します。

$cp コピー元パス コピー先パス

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

実際にviエディタの基礎で作成したファイルをcpコマンドでコピーしてみましょう。ファイルを作成した場所まで移動し、以下のコマンドを入力してください。

$cp test.txt test-cp.txt

今回は相対パスで指定しました。test.txtを同一ディレクトリにtest-cp.txtというファイル名でコピーします。

コマンドの実行が成功すると何も出力されずにコマンド待機状態になります。

少し応用で、異なるディレクトリに同じファイル名でコピーする場合には以下のようにします。

$cp test.txt ~/

これを実行すると、コピー先にホームディレクトリを指定しているため、test.txtをユーザーのホームディレクトリ内に同じファイル名でコピーすることができます。cdコマンドでホームディレクトリに移動し、lsコマンドでtest.txtファイルを確認できるはずです。

ディレクトリをまるごとコピーしたい場合

上記で実行したのはあくまでもファイルのコピーです。ディレクトリをそのままコピーしようとすると、下記のようなエラーが出力されます。

$cp /tmp ~/
cp: /tmp is a directory (not copied)

/tmpはディレクトリです。コピー元がディレクトリの場合には、ディレクトリだからコピーできませんというエラーが表示されます。

ディレクトリを中身ごとコピーしたい場合には-rというオプションを付けるとうまくいきます。

$cp -r /tmp ~/

このオプションを付けて実行すればディレクトリでもコピーが可能です。
ホームディレクトリ内にtmpディレクトリがコピーされているはずです。もちろんtmpディレクトリの中にあったtest.txtもコピーされています。

-rオプションは「recursive」の略で、日本語にすると「再帰的に」という意味になります。

この再帰的にというのは、「ディレクトリ内のものも同様に」という意味です。ディレクトリ内にディレクトリがあった場合でも再帰的に(そのディレクトリ内も同様に)処理を繰り返すという意味になります。

つまり再帰的に処理を行うというのは、「ディレクトリの中のものに関しても繰り返し同じ処理を行う」ということです。

今回のcpコマンドでは、tmpディレクトリを再帰的にコピーします。よってtmpディレクトリ内にあるファイルやディレクトリも同様にコピーできます。

この再帰的という言葉の意味が分かりづらいですが、ディレクトリ関係の操作を行う際にはよく出てくる言葉なので覚えておきましょう。

まとめ

cpコマンドは他にもいくつかのオプションがありますが、基本的には-rを利用するだけで大体のコピー作業は可能です。

また、cp コピー元ファイル1 コピー元ファイル2 ... コピー先ディレクトリパスとすれば、まとめてコピーすることもできます。

その他のオプションについては興味があるときに調べる程度で十分でしょう。