Cp (UNIX)

cpはUNIXのシェル上で入力するコマンドの一種で、ファイルをある場所から別の場所へコピーする。異なるファイルシステム間でもコピーできる。元のファイルはそのまま残り、新しいファイルは同じ名前の場合もあるし、別の名前をつけることもできる。
本項目ではPOSIXに定められている仕様を解説する。多くのLinuxシステムで使用しているGNUのcpには追加のオプションがある。
使用法.
1つのファイルを別のファイルにコピーする。
 cp [ -f ] [ -H ] [ -i ] [ -p ][ -- ] SourceFile TargetFile
ファイルをディレクトリにコピーする。
 cp [ -f ] [ -H ] [ -i ] [ -p ] [ -r | -R ] [ -- ] SourceFile ... TargetDirectory
ディレクトリを別のディレクトリにコピーする。
 cp [ -f ] [ -H ] [ -i ] [ -p ] [ -- ] { -r | -R } SourceDirectory ... TargetDirectory
使用例.
カレントディレクトリにある1つのファイルを同じディレクトリ内にコピーする。
 cp prog.c prog.bak
これにより、prog.c を prog.bak にコピーする。prog.bak が存在していなかった場合、cpコマンドがそれを生成する。既に存在していた場合、中身を prog.c のコピーに上書きする。
カレントディレクトリにある1つのファイルを別のディレクトリ配下にコピーする。
 cp jones /home/nick/clients
これにより、jones というファイルが /home/nick/clients/jones にコピーされる。
1つのファイルをコピーする際に、更新時刻や対応するアクセス制御リストを保持する。
 cp -p smith smith.jr
これにより、smith から smith.jr にコピーする。そして、コピーしたときのタイムスタンプではなく、元のファイルと同じ更新時刻を保持させる。また、ファイルパーミッションも全く同じになる。
あるディレクトリ配下の全ファイルを新たなディレクトリにコピーする。
 cp /home/janet/clients/* /home/nick/customers
これにより /home/janet/clients ディレクトリにあるファイルのみを /home/nick/customers ディレクトリにコピーする。
サブディレクトリも含めあるディレクトリの配下全部を別のディレクトリにコピーする。
 cp -R /home/nick/clients /home/nick/customers
この場合、/home/nick/clients 配下のサブディレクトリも含めた全てが /home/nick/customers/clients ディレクトリにコピーされる。
複数のファイルを指定して別のディレクトリにコピーする。
 cp jones lewis smith /home/nick/clients
jones、lewis、smith というファイルが /home/nick/clients ディレクトリにコピーされる。
パターンマッチングを使い、特定のファイルをコピーする。
 cp programs/*.c .
programs ディレクトリにある、末尾に ".c" のつくファイルをカレントディレクトリにコピーする。最後のドットがカレントディレクトリを表すことに注意（その前に必ず空白が必要）。