CP(1)

名称
cp - ファイルをコピーする

書式
cp [ -R [-H | -L | -P]] [-f | -i] [-p] source_file target_file cp [ -R [-H | -L | -P]] [-f | -i] [-p] source_file ... target_directory

解説
1 番目の書式の場合、 cp ユーティリティは source_file の内容を target_file にコピーします。 2 番目の書式の場合、 source_file の各々が target_directory にコピーされます。この場合、ファイル名は変更されません。 もし、コピー先が自分自身になるような指定を cp が検出した場合は、コピーが失敗します。

以下のオプションが利用可能です:

-H  -R オプションが指定されている場合に、コマンドライン上で指定された シンボリックリンクをたどるようになります。(ツリー内をたどっている最中に見つけた シンボリックリンクの先は調べません)

-L  -R オプションが指定されている場合に、すべてのシンボリックリンクをたどるように なります。

-P  -R オプションが指定されている場合に、シンボリックリンクの先は一切たどらないように なります。

-R  source_file としてディレクトリが指定された場合、 cp はそのディレクトリとそれ以下の 部分木を構成するすべてのファイルをコピーします。シンボリックリンクに ついては、それが指している先のファイルをコピーするのではなく シンボリックリンクのままコピーします。スペシャルファイルについても、 通常ファイルとしてではなく cp がスペシャルファイルを生成することでコピーします。 作成されるディレクトリの属性は、プロセスの umask 値の 影響を受けず、対応するコピー元のディレクトリと同じ属性となります。

-f  コピー先にすでに同名のファイルが存在する場合、上書きしようとします。 もし、コピーが成功しないようなパーミッションの場合、 確認を求めずにそれを消去して新しくファイルを作成します。 (-f オプションが指定されると、 -i オプションは無視されます。)

-i  すでに存在するファイルへの上書きを伴うコピーを実行する前に、 上書きするかどうかの確認プロンプトを cp が標準エラー出力へ出力するようになります。標準入力からの返答が 文字 `y' で始まっていれば、コピーが実行されます。

-p  ファイルの変更時刻、アクセス時刻、ファイルフラグ、モード、ユーザ ID、 グループ ID などを、パーミッションの許す範囲内ですべて保存してコピーします。

    ユーザ ID やグループ ID が保存できない場合でも、エラーメッセージは出力されず、 戻り値も変化しません。

    コピー元のファイルに SETUID ビットが立っておりかつそのユーザ ID が保存できない 場合、SETUID ビットは保存されません。コピー元のファイルに SETGID ビットが 立っておりかつそのグループ ID が保存できない場合、SETGID ビットは 保存されません。コピー元のファイルに SETUID ビットと SETGID ビットが共に 立っておりかつそのユーザ ID かグループ ID のいずれか一方でも保存できない場合、 SETUID ビットと SETGID ビットの両方が保存されません。

すでに存在するコピー先ファイルについては、パーミッションが許せば 内容は上書きされますが、モード、ユーザ ID、グループ ID は変化しません。

2 番目の書式では、 source_file にディレクトリが 1 つだけ指定されかつ -R オプションが指定されている場合でない限り、 target_directory は存在していなければなりません。

コピー先ファイルが存在しない場合、コピー元ファイルのモードに ファイルモード生成マスク (umask, csh(1) を参照) を適用したものがコピー先ファイルのモードとして使用されます。 コピー元ファイルの SETUID ビットが立っていても、コピー元ファイルとコピー先 ファイルの所有者が同一でない限り、そのビットは落とされます。 コピー元ファイルの SETGID ビットが立っていても、コピー元ファイルとコピー先 ファイルが同一グループに属していてかつコピーを行うユーザがそのグループ に入っていない限り、そのビットは落とされます。 SETUID ビットと SETGID ビットの両方が立っている場合、上記のすべての 条件が満たされない限り、両方のビットが落とされます。

ファイルの生成および上書きには、適切なパーミッションがなければなりません。

-R フラグが指定されない限りシンボリックリンクは常に追跡され、 -R フラグが指定された場合はシンボリックリンクは追跡されないというのが デフォルト動作です。 -H または -L フラグ (-R フラグと併用) を用いると、前述したようにシンボリックリンクの追跡を行うように なります。 -H, -L, -P オプションは、 -R オプションが指定されていなければ無視されます。 さらに、これらのオプションはお互いの効果を上書きするため、 コマンドの動作は最後に指定されたもので決まります。

cp は成功した場合は 0 を、エラーが起きた場合は 0 より大きな値を返します。

互換性
従来版の cp には -r オプションがありました。本実装でもこのオプションは実装されていますが、 特殊ファイル、シンボリックリンク、FIFO などを正しくコピーできないため、 これを使用することは奨められません。

関連項目
mv(1), rcp(1), umask(2), fts(3), symlink(7)

標準
cp ユーティリティは p1003.2 互換のつもりで作ってあります。