概述
cp
命令主要可用于复制文件或目录。cp
是单词 copy
的缩写。
语法
cp
命令的语法如下:cp [选项] source dest
。即复制 source 文件到 dest。
该命令支持的选项有:
选项 | 说明 |
---|---|
-r | 递归复制整个文件夹 |
-i | 若目标文件已经存在,则会询问是否覆盖 |
-p | 保留源文件或目录的所有属性 |
-d | 当复制符号链接时,把目标文件或目录也建立为符号链接,并指向与源文件或目录连接的原始文件或目录。如果不加上该选项,则复制的仍然是源文件而不是符号链接文件,并且对硬链接文件无效 |
-l | 对源文件建立硬链接,而非复制文件 |
-s | 对源文件建立符号链接,而非复制文件 |
-b | 覆盖已存在的目标文件前将目标文件进行备份 |
-v | 详细显示 cp 命令执行的操作过程 |
该命令的参数说明:
参数 | 说明 |
---|---|
source | 源文件或目录 |
dest | 目标文件或目录 |
注:该命令最常用的是就算复制文件和复制文件夹功能。
使用
复制文件
所谓的复制文件,就是将一个文件复制到另外一个目录下,其中 source
表示源文件,而 dest
表示目标目录。语法如下:
# 语法
cp 源文件 目标目录
# 实例,将 test.txt 文件复制到 /root/ 目录下
cp /home/lighthouse/test.txt /root/
复制目录
通常情况下,待复制的目录都不是空文件夹,如果直接使用 cp
命令进行复制会失败,如果想要把指定目录及该目录下的子文件和子文件夹都复制过去,则需要加上 -r
选项。其中 src
是源目录;dest
表示目标目录。
# 语法
cp -r 源目录 目标目录
# 实例,将 /home/lighthouse 目录复制到 /root 下
cp -r /home/lighthouse /root/
覆盖文件
当将一个文件或目录复制到另外一个目录下时,如果该目录下已经存在同名文件或目录,那么复制操作就会询问你是否覆盖,如果想要覆盖就回答 y
。但每个文件都要回答一次就会很麻烦,所以可以使用 \cp
命令。语法如下:
# 语法
\cp 源文件 目标文件
# 实例
\cp /home/lighthouse/test.txt /root/test.txt
注意,此时
source
表示源文件;dest
表示目标文件,而不是目录。
因为 cp
命令实际上是 cp -i
的别名,而 -i
选项表示在覆盖前询问进行询问。而 \cp
表示使用原始的 cp
命令,而不是这别名表示的命令。
当前目录下复制文件
在当前工作目录中,将某个文件复制一份,并重新定义名称,通常用来备份文件:
cp 源文件名 目标文件名
同样,也可以这样复制一个目录,但必须加上 -r
选项。
显示复制过程
可以加上 -v
选项显示 cp
命令详细的执行过程:
复制多个文件
即源文件 source
可以有多个,但目标文件必须是目录才可以。语法如下:
cp 源文件1 源文件2 源文件3 ... 目标目录
复制软链接文件
如果要复制软连接文件,则需要使用 -d
选项,否则 cp
命令复制的就算源文件本身,而不是软链接文件。只有加上 -d
选项,才会复制软链接文件。语法如下:
cp -d 软连接文件 目标目录或目标文件
复制保留源文件属性
当我们执行完复制命令后,目标文件的时间会变成复制命令的执行时间,而非源文件的时间。所以如果要复制后仍然保留源文件的属性,则需要加上 -p
选项,会保留源文件的所有属性。
建立源文件的硬链接和软链接
可以通过 -l
选项,将目标文件建立成源文件的硬链接;可以通过 -s
选项将目标文件建立成源文件的软链接。同 -d
选项不同,-d
选项要求源文件必须是软链接才能复制成软链接,这两个选项要求源文件是普通文件就可以了。
# 将目标文件建立为源文件的硬链接文件
cp -l 源文件 目标文件
# 将目标文件建立为源文件的软链接文件
cp -s 源文件 目标文件