**cp**是一个用于复制文件的UNIX命令。文件可以被复制到相同目录下，也可以复制到其他完全不同的目录中（甚至复制到不同的文件系统或是硬盘中）。如果文件将被复制到相同的目录中，那么目标文件文件必须使用不同于原文件的文件名；在其他情况下，目标文件的名称允许使用与原文件相同或不同的名称。原始的文件不会被改变。

*cp* 命令现在拥有多种实现版本，两个主要的版本是POSIX *cp* 与 GNU *cp*。 GNU *cp* 有许多额外的选项。

用法
--

将文件复制为另一文件：

```
 cp [-f] [-H] [-i] [-p][--] 源文件 目标文件

```

将文件复制到一目录下：

```
 cp [-f] [-H] [-i] [-p] [-r | -R] [--] 源文件 ... 目标目录

```

将目录复制为另一目录（必须使用参数 -r 或 -R）：

```
 cp [-f] [-H] [-i] [-p] [--] { -r | -R } 源目录 ... 目标目录

```

参数
--

**-f** (强制) – 在目标文件因没有写权限而无法打开时删除目标文件。这一移除动作先于所有的cp命令复制动作。

**-L** (间接引用) – 使cp命令跟随符号链接，这样cp命令将复制符号链接指向的文件而不是符号链接到目的位置。

**-i** (交互) – 提示您将要被覆盖之文件的文件名。当目标目录或是目标文件中包含一个与原文件（或目录）名字相同的文件（或目录）时，交互就会发生，如果你输入 'y' 或者区域语言中等价于 'y'的字符，cp操作将覆盖目标文件，其余的任意回答都会避免目标文件被原文件覆盖。

**-p** (保持) – 对于每个原文件（或目录），在复制时也复制下述特性：

* **最后一次修订时间**与**最后一次访问时间**。
* **所属用户ID**和**所属组ID**（仅在有权限如此做时）。
* 文件**权限位**以及**SUID**和**SGID**权限位。

**-R** or **-r** (递归) – 复制目录（递归地复制目录中的所有内容）

范例
--

欲复制原文件的一份副本，执行：

```
 cp prog.c prog.bak

```

这一操作把文件prog.c复制为prog.bak。如果prog.bak文件不存在，cp命令将创建此文件。如果目标文件已存在，cp命令将用原文件的内容替代目标文件中的内容。

欲复制当前工作目录中的文件到另外一目录中，执行：

```
 cp jones /home/nick/clients

```

这一操作将 jones 文件复制到 /home/nick/clients/jones。

欲将文件复制为新的文件，并保留修改日期与相关的访问控制权限，执行：

```
 cp -p smith smith.jr

```

操作将smith文件复制为smith.jr文件。此时系统将给与smith.jr与smith文件相同的修改日期和时间而并不使用当前的系统时间。smith.jr文件同时也继承了smith文件的访问控制保护。

欲将某目录中所有文件复制到新目录中，执行：

```
 cp /home/janet/clients/* /home/nick/customers

```

这一操作仅将clients目录中的文件复制到customers目录中。

欲将一个目录，包括其包含的所有文件与子目录复制到另一目录中，执行：

```
 cp -R /home/nick/clients /home/nick/customers

```

这一复制将clients目录以及其中包含的所有文件、子目录与子目录中的文件复制到customers/clients目录下。
注意在原目录的结尾无斜杠符：如果你在GNU基础的系统上执行`cp -R /home/nick/clients/ /home/nick/customers`，这与原目录没有加结尾斜杠符的效果相同。 
但如果你在BSD基础系统上执行相同的命令，这将复制所有client目录中的*内容*，而不是client目录本身。

欲将复制指定的一些文件到另一目录中，执行：

```
 cp jones lewis smith /home/nick/clients

```

这一操作复制当前工作目录下的 jones、lewis和smith 文件到 /home/nick/clients 目录。

欲使用模式匹配字符集来复制文件，执行：

```
 cp programs/*.c .

```

这一操作将programs目录下所有以 .c 结尾的文件都复制到当前目录下，当前目录用单个点符号 *.* 表示。在 *.c* 和最后的 *.* 之间必须用空格隔开。

将文件复制到另一已存在文件的过程是：将已存在文件以更新模式打开（使用这一模式需要拥有目标文件的写入权限）。操作的结果是目标文件保留了其原来拥有的权限位。

相关 Unix 命令
----------

* cpio – 复制完整的目录结构到其他文件系统位置
* tar – 建立文件归档
* link – 建立文件或目录的链接的系统调用
* ln – 建立文件或目录的链接文件
* mv – 移动文件或目录
* rm – 移除文件或目录
* unlink – 删除文件或目录的系统调用
* chmod – 修改文件或目录的权限位
* chown – 修改文件或目录的隶属关系
* chgrp – 修改文件或目录的所属组
* uucp – UNIX间复制协议
* scp – 通过SSH隧道安全复制

参见
--

* Unix工具列表

参考来源
----

1. ↑ .  [2011-07-09]. （原始内容存档于2011-06-24）.



|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * 
* 论
* 编
Unix命令行程序和shell内建命令 |
| --- |
|  |
| 文件系統 | 
* cat
* cd
* chmod
* chown
* chgrp
* cksum
* cmp
* cp
* dd
* du
* df
* file
* fsck
* fuser
* ln
* ls
* mkdir
* mount
* mv
* pax（英语：）
* pwd
* rm
* rmdir
* size
* split
* stat
* tee
* touch
* type（英语：）
* umask（英语：）

 |
|  |
| 程序 | 
* at
* bg
* chroot
* cron
* fg
* kill
* killall（英语：）
* nice
* pgrep
* pkill（英语：）
* ps
* pstree（英语：）
* time
* top

 |
|  |
| 用户环境 | 
* clear
* env
* exit
* history（英语：）
* id
* logname
* mesg（英语：）
* passwd
* su
* sudo
* uptime
* talk（英语：）
* tput（英语：）
* uname
* w
* wall（英语：）
* who
* whoami
* write（英语：）

 |
|  |
| 文本编辑 | 
* awk
* banner（英语：）
* basename
* comm（英语：）
* csplit（英语：）
* cut
* diff
* dirname
* ed
* ex
* fmt（英语：）
* fold（英语：）
* head（英语：）
* iconv
* join（英语：）
* less
* more
* nl（英语：）
* paste（英语：）
* sed
* sort（英语：）
* spell（英语：）
* strings（英语：）
* tail
* tr
* uniq（英语：）
* vi
* wc
* xargs

 |
|  |
| 壳层内建 | 
* alias
* echo
* printf格式字符串
* test（英语：）
* unset
* wait

 |
|  |
| 网络 | 
* dig
* host
* ifconfig
* inetd（英语：）
* netcat
* netstat
* nslookup
* ping
* rdate（英语：）
* rlogin（英语：）
* route
* ssh
* traceroute

 |
|  |
| 查找 | 
* find
* grep
* locate
* whatis（英语：）
* whereis

 |
|  |
| 文档 | 
* apropos（英语：）
* help（英语：）
* man

 |
|  |
| 软件开发 | 
* ar
* ctags
* lex
* make
* nm
* strip
* yacc

 |
|  |
| 杂项 | 
* bc
* cal
* dc
* expr
* lp（英语：）
* lpr
* sleep
* true和false
* yes

 |
|  |
| Unix实用程序列表 |

 |