CP(1)

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

書式
cp [ -R [-H | -L | -P]] [-f | -i] [-p] source_file target_file
cp [ -R [-H | -L | -P]] [-fip] 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’ か ‘Y’ で始まっていればコピーが実行されます。 ( -i オプションより前の -f オプションは無視されます。)

-p  ファイルの変更時刻・アクセス時刻・フラグ・モード・ユーザID・グループID などを、パーミッションが許す範囲内で可能な限り保存してコピーするよう cp に指示します。

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

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

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

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

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

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

-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 互換を想定しています。

歴史
cp コマンドは AT&T UNIX から登場しました。