日期:2014-05-16  浏览次数:20637 次

Linux cp 命令详解(转)

http://morgan363.iteye.com/blog/670004

?

cp命令
??????? 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,同MSDOS下的copy命令一样,功能十分强大。
??????? 语法: cp [选项] 源文件或目录 目标文件或目录

??????? 说明:该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中。

该命令的各选项含义如下:

??????? -a????? 该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,其作用等于dpR选项的组合。

??????? -d????? 拷贝时保留链接。

??????? -f????? 删除已经存在的目标文件而不提示。

??????? -i????? 和f选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。

??????? -p????? 此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。

??????? -r????? 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。

??????? -l????? 不作拷贝,只是链接文件。

??????? 需要说明的是,为防止用户在不经意的情况下用cp命令破坏另一个文件,如用户指定的目标文件名已存在,用cp命令拷贝文件后,这个文件就会被新源文件覆盖,因此,建议用户在使用cp命令拷贝文件时,最好使用i选项。

例子:
??????? cp -i file1 file2 ??????? 将文档 file1 复制成 file2 . –i为提示确认。

??????? cp file1 dir1 ??????? 将文档 file1 复制到目录 dir1 下,文件名仍为 file1.

??????? cp /tmp/file1 . ??????? 将目录 /tmp 下的文档 file1复制到现行目录下,档名仍为 file1.

??????? cp /tmp/file1 file2 ??????? 将目录 /tmp 下的文档 file1现行目录下,档名为file2

??????? cp -r dir1 dir2 ??????? (recursive copy) 复制整个目录.若目录 dir2 不存在,则将目录dir1,及其所有文档和子目录,复制到目录 dir2 下,新目录名称为dir1.若目录dir2不存在,则将dir1,及其所有文档和子目录,复制为目录 dir2.


======================================================================

??? cp (copy)命令将一个文件、多个文件或目录复制到另一个地方。
??? 选项 -R 允许递归复制目录 (一般来说,命令中的 -R 或 -r 经常有递归的意思)。
??? 如果 cp 命令的最后参数是目录,所提到的文件将被复制到该目录下。
??? 注意:默认情况下,cp 命令将“覆盖”已经存在的文件。

请看下面的例子:

??????? ? cp afile afile.bak —— 把文件 afile 复制为新文件 afile.bak。

??????? ? cp afile /home/bible/ —— 把文件 afile 从当前目录复制到/home/bible/目录下。

??????? ? cp * /tmp —— 把当前目录下的所有未隐藏文件复制到/tmp/目录下。

??????? ? cp -a docs docs.bak —— 递归性第把当前目录下的 docs 目录复制为新目录 docs.bak,保持文件属性,并复制所有的文件,包括以句点开头的隐藏文件。为了方便起见,-a 选项暗含 -R 选项。

??????? ? cp -i —— 如果要把文件复制到已经存在的一个相同的文件的目录下,默认时,旧文件将被覆盖。 -i 选项可以让命令交互,换句话说,在覆盖之前询问用户。

??????? ? cp -v —— 带有 -v (verbose)选项,cp命令将告诉用户正在做什么。很多Linux命令都带有具有相同意义的 -v 选项。