cp
何するコマンド?
書き方
cp [オプション] [対象のファイルやディレクトリ] [コピー先の場所と名前]
もしくは
cp [オプション] [対象のファイルやディレクトリ(半角スペース区切りで複数指定可能)] [コピー先の場所]
オプション
| オプション | 説明 |
|---|---|
| -a | アクセス権とかをできる限りそのままコピーする |
| -b | 上書きされるときは、なくなる方のバックアップを作ってから上書きする |
| -d | シンボリックリンク、ハードリンクをそのままリンクとしてコピーする |
| -f | 「上書きしていい?」って聞いてこない |
| -i | 「上書きしていい?」って聞いてくれる |
| -l | ファイルを指定した場合、ハードリンクになる |
| -p | できる限りそのまま(更新日時とかも保持して)コピーする |
| -r | ディレクトリの中身もコピーする |
| -s | ファイルを指定した場合、シンボリックリンクになる |
| -t | コピー先を明示的に指定する |
| -u | ファイルやディレクトリが新しいときのみ上書きする |
| -v | 「このファイルをこんな名前でどこにコピーしたよー」と報告してくる |
| -H | 対象がシンボリックリンクの場合、リンク先をファイルやフォルダとしてコピーする。「-r」「-R」オプションと一緒に使う |
| -L | シンボリックのリンク先もファイルやフォルダとしてコピーする。「-r」「-R」オプションと一緒に使う |
| -P | シンボリックをそのままリンクとしてコピーする。「-r」「-R」オプションと一緒に使う |
| -R | ディレクトリの中身もコピーする |
| -S | 「-b」オプション指定時に作られるバックアップのサフィックスを指定する |
補足事項
オプションの中では「-H」「-L」「-P」が分かりづらいですかね。
これらのオプションは「-r(-R)」オプションと併用して使います。
簡単な方から行きましょう。
まずは「-L」と「-R」の違いです。
例えば「aaa/bbb/ccc.txt」があったとします。
そして「ddd/sl_bbb」という「aaa/bbb/」を指したシンボリックリンクがあったとします。
この状態で
cp -RP ddd ddd_2
を実行すると
ddd_2/(ディレクトリ)
ddd_2/sl_bbb(シンボリックリンク)
が作られます。
一方
cp -RL ddd ddd_3
を実行すると
ddd_3/(ディレクトリ)
ddd_3/sl_bbb(ディレクトリ)
ddd_3/sl_bbb/ccc.txt(ファイル)
が作られるのです。
「-H」も「-R」と似たような動きをしますが、コピー元のファイルがシンボリックリンクの場合に使います。
例えば
cp -R ddd/sl_bbb sl_fff
を実行すると
sl_fff(シンボリックリンク)
が作られます。
一方
cp -RH ddd/sl_bbb sl_ggg
を実行すると
sl_ggg(ディレクトリ)
sl_g/ccc.txt(ファイル)
が作られるのです。
長々と書いてしまいましたが、そんな感じ。
オプションがいっぱいあって覚えるのが大変そうですが、心配はいりません。
・「-f」:「上書きしていい?」って聞いてこない
・「-i」:「上書きしていい?」って聞いてくれる
・「-p」:できる限りそのまま(更新日時とかも保持して)コピーする
・「-r」:ディレクトリの中身もコピーする
だけ覚えておけば、ほぼ事足ります。
対象を指定しないで
cp [オプション]
もしくは
cp [-t以外のオプション] [対象 or コピー先片方]
と打った場合、怒られます。
あと余談ですが「cp」は「copy(コピー)」の略です。
