cp 命令有坑

cp 是个很常用的命令,

基本语法为  cp -v  a   b  把文件a 复制为文件b(-v为显示做了什么,这是非常安全的做法,建议新手添加此参数)

参数说明:

-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于-dR  或者 --preserve=all

-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。

-f:覆盖已经存在的目标文件而不给出提示。

-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。(一般情况下系统别名已自动添加此参数)

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

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

-l:不复制文件,而是生成 硬链接

-s :不复制文件,而是生成 软链接

-v: 显示cp指令做了什么

场景:cp  -v  a   b   把文件a拷贝为文件b,两者相似而不相同

坑1:   b为已存在目录时, a会被复制到 目录b下(新手会出现的)

  正确指令:

    想复制文件本身时: cp -T a b   (b与a不是相同属性时会报错而且复制不了)

    想复制到目标目录下时: cp  a  b/     (b为非目录时会报错)

坑2: a 为软连接的情况下, 复制后的文件会是a所连接文件的拷贝

坑3: 基于坑2, cp -r 时,  复制后的文件也会是软连接,指向目录也会相同(不过基本上都是失效)

   正确指令:

    想复制结果也是软连接时: cp   -sr   a   b    或    cp   -s  a   b 

    想复制结果为软连接的目标时:cp  -Lr    a   b   或    cp   -L   a   b 

      

坑4:cp -l  千万不要用这个参数,因为这个是硬连接!!!

原文地址:https://www.cnblogs.com/caya-yuan/p/10603448.html