cp(copy)命令用来复制文件或者目录,是Linux系统中最常用的命令之一。一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不管你是否使用-i参数。但是如果是在shell脚本中执行cp时,没有-i参数时不会询问是否覆盖。这说明命令行和shell脚本的执行方式有些不同。

1.命令格式:

1
2
3
cp [选项]... [-T] 源 目的
或:cp [选项]... 源... 目录
或:cp [选项]... -t 目录 源...

2.命令功能:

 将源文件复制至目标文件,或将多个源文件复制至目标目录。

3.命令参数:

1
2
3
4
5
6
7
-a, 此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
-d, 复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
-f, 覆盖已经存在的目标文件而不给出提示。
-i, 与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
-p, 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r, 若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l, 不复制文件,只是生成链接文件。

4.使用实例:

实例1:复制单个文件到目标目录,文件在目标文件中不存在(在没有带-a参数时,两个文件的时间是不一样的。在带了-a参数时,两个文件的时间是一致的)

1
cp log.log test5

实例2:目标文件存在时,会询问是否覆盖(目标文件存在时,会询问是否覆盖。这是因为cp是cp -i的别名。目标文件存在时,即使加了-f标志,也还会询问是否覆盖):

1
cp log.log test5

实例3:复制log.log建立一个连结档log_link.log(log_link.log是由-s的参数造成的,建立的是一个『快捷方式』,所以您会看到在文件的最右边,会显示这个文件是『连结』到哪里去):

1
cp -s log.log log_link.log