今回はLinuxコマンドであるcpコマンドについて解説します
cpコマンドはディレクトリやファイルを削除するLinuxの基本コマンドです
ぜひ覚えて帰ってくださいね!
※注 本文の△は半角スペースに置き換えてください。わかりやすくするために△で記述してます
cpコマンドとは??
cpコマンドはディレクトリやファイルをコピーするコマンドです
ファイル、フォルダをコピーする際に使用します
「copy」を省略して「cp」になっています
指定の仕方としては、「cp△コピー元△コピー後ファイル名」と指定します(ディレクトリをコピーする場合は「-r」か「-R」オプションを使用します)
コピー元のファイルをコピー後ファイル名でコピーします
また、ファイルを複数指定してコピーすることも可能です
「*」はメタキャラクタと呼ばれる特殊文字で、直前の文字を0回以上繰り返します
「./」でカレントディレクトリを表すので、「./*」でカレントディレクトリ配下の全ファイルを指定してコピーしています
あるディレクトリ配下のファイルのバックアップをしたいときに使うと早くて便利です
cp△ファイル名
cp△ファイル1△ファイル2△ファイル3△コピー先ディレクトリ名
普通にファイルをコピーする場合

ファイルを複数指定している場合

./*で全ファイルを指定している場合

cpコマンドの主なオプション
オプション | 意味 |
---|---|
-i (--interactive) | コピー先に同じファイルがあった場合上書きしていいか確認する |
-f (--force) | ユーザへの確認を行わず強制的にコピーする |
-r,-R (--recursive) | サブディレクトリ含め、再帰的にディレクトリ全体をコピーする |
-b (--backup) | コピー先に同名のファイルがあればバックアップを取ってから上書きする |
-v (--verbose) | 削除処理を行う際の詳細情報を表示する |
-s (--symbolic-link) | シンボリックリンクを作成する |
-l (--link) | ハードリンクを作成する |
-n (--no-clobber) | コピー先に同名のファイルやディレクトリがあったら上書きしない |
-p (--preserve) | 元ファイルのオーナ、グループ、パーミッション、タイムスタンプごとコピーする |
-S△接尾語 (--suffix=接尾語) | バックアップファイルを作る際のファイル名末尾に着ける文字を指定する |
-d | シンボリックリンク自体をコピーする |
-i (–interactive)
コピー先に同じファイルがあった場合上書きしていいか確認するオプション
「interactive」のiです
エイリアス機能というコマンドをひとまとめにできる機能があるのですが、「cp」だけで「cp△-i」を呼び出してくれる設定がしてある可能性があります
その場合「cp」コマンドのみでも「cp△-i」の働きをしてくれます
「alias」コマンドを引数なしで実行することで、現在設定されているエイリアス機能を確認することが出来ます
「alias△cp△=’cp△-i’」と記載があったらcpコマンドのみでも「cp△-i」の働きをしてくれますよ
cp△-i△コピー元△コピー後ファイル名

-f (–force)
ユーザへの確認を行わず強制的にコピーするオプション
よくオプションは頭文字がつけられることが多いのですが、
こちらは「force」の頭文字のfと覚えましょう
先ほど「-i」コマンドで説明しましたが、cpコマンドにエイリアス機能がついている可能性があります
その場合「-f」オプションを使用しても強制的にコピーせずに確認してくれます
エイリアス機能がいらない場合は「unalias△cp」でcpコマンドのエイリアス機能を削除してあげましょう
個人的にはエイリアス機能は入れてあるのがおすすめなので、削除しない方が良いと思います
下記実行コマンドでは、エイリアス機能を削除しています
cp△-f△コピー元△コピー後ファイル名

-r,-R (–recursive)
サブディレクトリ含め、再帰的にディレクトリ全体をコピーするオプション
ディレクトリをコピーする場合、「-r」「-R」オプションを使用しないとコピーできません
下記実行結果は「-r」オプションのみですが、「-R」オプションでも同じように使用することが出来ます
cp△-r△コピー元△ディレクトリ名
cp△-R△コピー元△コピー後ディレクトリ名

-b (–backup)
コピー先に同名のファイルがあればバックアップを取ってから上書きするオプション
コピー先の元のファイル名が「既存ファイル名~」に変わって、コピー元のファイル名が指定したファイル名に変わります
cp△-b△コピー元△コピー後ファイル名

-v (–verbose)
削除処理を行う際の詳細情報を表示するオプション
「`コピー元’ -> `コピー後ファイル名’」 と表示されます
cp△-v△コピー元△コピー後ファイル名

-s (–symbolic-link)
シンボリックリンクを作成するオプション
「ln△-s△」でシンボリックリンクを作成するのですが、「cp△-s」コマンドでもシンボリックリンクを作成することが出来ます
シンボリックリンクはファイル名でもディレクトリ名でも可能です
cp△-s△シンボリックリンク元△シンボリックリンク名

-l (–link)
ハードリンクを作成するオプション
lnコマンドでハードリンクを作成するのですが、「cp△-l」コマンドでもハードリンクを作成することが出来ます
「ls△-△li」コマンドでiノード番号が同じことが確認できるので、ハードリンクが作成されていることがわかります
cp△-l△ハードリンク元△ハードリンク名

-n (–no-clobber)
コピー先に同名のファイルやディレクトリがあったら上書きしないオプション
コピー先のファイルをどうしても上書きしたくないときに使います
ファイルがある場合は上書きされず「cp」は実行されません
cp△-n△コピー元△コピー後ファイル名

-p (–preserve)
元ファイルのオーナ、グループ、パーミッション、タイムスタンプごとコピーするオプション
cp△-p△コピー元△コピー後ファイル名

-S△接尾辞 (–suffix=接尾辞)
バックアップファイルを作る際のファイル名末尾に着ける文字を指定するオプション
よく日付でバックアップファイルを作成することがあるのですが、そういう時に
「-S△_$(date△+%Y%m%d)」を指定してあげるとコピー元ファイルの名前がコピー先にあった場合に
コピー先ファイルの後にYYYYMMDD(年月日)が入るようになります
下の実行結果を見ていただければわかると思うのですが、元あったfileBBファイルが「fileBB_日付」としてバックアップファイルが作成され、fileAAをfileBBとしてコピーしています
cp△-S△接尾辞△コピー元△コピー後ファイル名

-d
シンボリックリンク自体をコピーするオプション
シンボリックをコピーする際に「-d」オプションを入れてあげないとシンボリックリンクではなく、ただのファイルとしてコピーされてしまいます
下記実行結果では、DirB/DirD配下にシンボリックリンク元ファイルのfileAAがないため、シンボリックリンクfileAA_sym2がうまく機能しません
その場合はDirB/DirD配下にfileAAファイルを作成すればシンボリックリンクが機能するようになります
cp△-d△シンボリックリンク元△コピー後シンボリックリンク名

まとめ
いかがでしたでしょうか
今回はcpコマンドについてまとめてみました
cpコマンドはディレクトリやファイルの削除ができるコマンドでLinuxの基本コマンドです
mvコマンドやrmコマンドとオプションが似ているのでmv、rmコマンドも一緒に覚えてしまいましょう!