命令格式

cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...

命令参数

-a, --archive

复制文件和目录及其属性。包括所有权和权限。

--backup[=CONTROL]

为每个已存在的目标文件创建备份。

-b

类似 --backup 选项,但不接受参数。

-f, --force

如果已存在的目标文件无法打开,将其移除并重试(当使用 -n 选项时,该选项是冗余的)。

-i, --interactive

在覆盖一个已存在的文件前,提示用户进行确认。

-l, --link

链接文件而不进行复制。

-n, --no-clobber

不会覆盖已存在的文件(此选项会覆盖先前的 -i 选项)。

-R, -r, --recursive

递归地复制目录及其内容。复制目录时需要这个选项(或 -a 选项)。

-s, --symbolic-link

只创建符号链接而不进行复制。

-S, --suffix=SUFFIX

自行指定备份文件的后缀。

-t, --target-directory=DIRECTORY

将所有参数指定的源文件或目录复制至指定目录。

-T, --no-target-directory

将目标目录当作普通文件。

-u, --update

当将文件从一个目录复制到另一个目录时,只会复制那些目标目录中不存在的文件或是目标目录相应文件的更新文件。

-v, --verbose

复制文件时,显示信息性消息。

--help

显示帮助信息。

--version

显示版本信息。

实例

a) 将文件 f1 复制到 f2。如果 f2 存在,则会被 f1 的内容覆盖。如果 f2 不存在,则创建 f2。

[huey@huey-K42JE cmdline]$ date > f1
[huey@huey-K42JE cmdline]$ cp f1 f2
[huey@huey-K42JE cmdline]$ cmp f1 f2
[huey@huey-K42JE cmdline]$

b) 当目标文件存在时,提示是否覆盖。

[huey@huey-K42JE cmdline]$ cp -i f1 f2
cp: overwrite `f2'?

c) 将文件 f1 与 f2 复制到目录 d1 中,d1 必须是已存在的。

[huey@huey-K42JE cmdline]$ mkdir d1
[huey@huey-K42JE cmdline]$ cp f1 f2 d1
[huey@huey-K42JE cmdline]$ ls d1
f1 f2

d) 通过使用通配符,将 d1 中的所有文件复制到 d2 中。d2 必须是已存在的。

[huey@huey-K42JE cmdline]$ mkdir d2
[huey@huey-K42JE cmdline]$ cp d1/* d2
[huey@huey-K42JE cmdline]$ ls d2
f1 f2

e) 将 d1 目录(及其内容)复制到 d3 目录中。如果 d3 不存在,则创建 d3,且包含与 d1 目录相同的内容。

[huey@huey-K42JE cmdline]$ mkdir d3
[huey@huey-K42JE cmdline]$ cp -r d1 d3
[huey@huey-K42JE cmdline]$ ls -R d3
d3:
d1
d3/d1:
f1 f2
[huey@huey-K42JE cmdline]$ cp -r d1 d4
[huey@huey-K42JE cmdline]$ ls -R d4
d4:
f1 f2