在 Linux 中,cp 命令用于将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。
cp 命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。
用于拷贝目录或文件。
cp [options] source dest
参数 | 描述 |
---|---|
options | cp 命令的选项。 |
source | 源文件或目录。 |
dest | 目标文件或目录。 |
参数 | 描述 |
---|---|
-a | 此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于 dpR 参数组合。 |
-d | 复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。 |
-f | 覆盖已经存在的目标文件而不给出提示。 |
-i | 与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 “y” 时目标文件将被覆盖。 |
-p | 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。 |
-r | 若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。 |
-l | 不复制文件,只是生成链接文件。 |
默认情况下,cp 命令不能复制目录,如果要复制目录,则必须使用 -r 选项,当 “源文件” 为多个文件时,要求 “目标文件” 为指定的目录。
实例 | 描述 |
---|---|
cp srcFile destFile | 复制文件 |
cp -f srcFile destFile | 复制文件,直接覆盖 |
cp -r srcDir destDir | 复制目录 |
cp -rf srcDir destDir | 复制目录,直接覆盖 |
使用 -r 选项,复制目录,使用 -f 选项,文件存在时,直接替换。
cp srcFile destFile
我们首先,使用 touch 命令,在 /tmp 目录下创建一个文件,具体命令如下:
touch /tmp/haicoder.txt
运行后,终端输出如下:
现在,我们使用 cp 命令,将 /tmp 目录下的文件拷贝到 /home 目录,具体命令如下:
cp /tmp/haicoder.txt /home
运行后,终端输出如下:
现在,我们使用 ls 命令,查看我们拷贝后的文件,具体命令所下所示:
ls -l /home/haicoder.txt
运行后,终端输出如下:
我们看到,我们已经拷贝了文件,现在,我们再次执行 cp 命令,再拷贝一次,具体命令如下:
cp /tmp/haicoder.txt /home
运行后,终端输出如下:
这次,我们再次使用 cp 拷贝文件,目标文件已经存在,提水我们是否需要覆盖,我们输入 y,进行覆盖,如下图所示:
输入 y 之后,我们就完成了拷贝,同时,我们还可以直接使用 -f 参数,强制覆盖,具体命令如下:
cp -f /tmp/haicoder.txt /home
运行后,终端输出如下:
我们看到,此时不再提示了。
cp -r srcFile destFile
我们首先,使用 mkdir 命令,在 /tmp 目录下创建一个目录,具体命令如下:
mkdir /tmp/haicoder
运行后,终端输出如下:
现在,我们使用 cp 命令,将 /tmp 目录下的目录拷贝到 /home 目录下,具体命令如下:
cp /tmp/haicoder /home
运行后,终端输出如下:
我们看到,此时,命令报错了,因为拷贝目录,必须要加 -r 参数,现在,再次使用 cp 命令拷贝目录,具体命令所下所示:
cp -r /tmp/haicoder /home
运行后,终端输出如下:
这次,我们看到,拷贝成功了,不再报错了,现在,我们使用 ls 命令,查看我们拷贝的文件,具体命令如下:
ls -ld /home/haicoder
运行后,终端输出如下:
我们看到,我们拷贝的目录已经存在了。
在 Linux 中,cp 命令用于将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。