cp 指令 copy file

警告
本文最后更新于 2023-10-22,文中内容可能已过时。

cp 指令 copy file

mv 是剪切,cp 就是复制

1
2
cp [选项] 文件路径
cp [选项] 文件... 目录

cp 复制文件 (或者目录等),可以使用这个命令复制一个文件到一个指定的目的地,或者复制任意多个文件到一个目的目录。很好记,就这两种情况。

分情况,直接看最后一个参数是文件名还是目录,

  • 如果最后一个命令参数为一个已经存在的目录名,cp会将每一个源文件复制到那个目录下 (维持原文件名),如果源文件为一个目录,则要带上-r

    例如:如果/b已经存在,那么cp -r /a /b会复制/a/b而成为/b/a,而复制/a/x/b而成为/b/a/x;但如果/b事先不存在,它会把/a复制为/b,把/a/x复制为/b/x,这其实就是复制之后重命名,相当于备份,这一点其实很好用,比如我想备份一个文件夹下的所有内容,我就可以把这个文件夹cp到一个不存在的目录,这样,就只会复制文件夹的下一级,文件夹本身不会被复制过去),但是注意,在将多个文件复制到一个目录中这种情况下,目录不存在会报错。此外,源文件还可以使用通配符,cp会将所有匹配的文件复制到目标目录中。

    此外要注意要分清楚带通配符和不带通配符的区别,cp -r a/* b/是把 a 文件夹下的内容递归匹配,复制到 b 下,cp -r a/ b/直接把 a 复制到 b 下。

  • 如果所给的参数只有两个文件名,它把前一个文件复制到后一个文件上.(注意,不是追加,而是内容覆盖),如果目的文件不存在,那么就会新建一个,这就相当于文件备份,这一点也很好用,比如我想要备份 aaa.txt,直接cp aaa.txt aaa-back.txt即可。

  • 如果最后一个参数不是目录名,而是文件名,那么给出多于两个非选项参数,是错误的。比如cp aaa.txt bbb.txt ccc.txt

参数分析:

  • -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于-dpr参数组合

  • -d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。软链接,默认不会复制软链接,想要复制链接,需要带上这个参数

  • -f:覆盖已经存在的目标文件而不给出提示。(当你是普通用户的时候,不带这个参数的时候也就是默认就会覆盖,但是当你是 root 用户的时候,默认就会提示,应该是因为管理员权限高,需要提示一下防止误删)。在cp命令前加反斜杠也是强制覆盖的意思,比如: \cp aaa.txt testdir/

  • -i:与 -f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖。

  • -n: 目标地址中包含重名文件,直接跳过,与-f的效果刚好相反

  • -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。

  • -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。

  • -l:不复制文件,只是生成链接文件。

常用参数 -a -d -p -r -f -i

0%