cpコマンド(ファイル・ディレクトリコピー)
更新日 : 2019年09月11日
ファイルの作成やファイルの閲覧ができるようになったところで、続いてはファイルをコピーしていきましょう。WindowsのエクスプローラーやmacOSのFinderなどでもコピーして別の場所で貼り付けなどをよく行うと思います。
もちろんLinuxでもコマンドでファイルやディレクトリのコピーができるので、cp
コマンドを理解して使えるようになりましょう。
もちろんcp
はcopyの略です。
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 ... コピー先ディレクトリパス
とすれば、まとめてコピーすることもできます。
その他のオプションについては興味があるときに調べる程度で十分でしょう。
タグ
-
前の記事
lessコマンド(ファイル閲覧)
-
次の記事
mvコマンド(ファイル・ディレクトリの移動)