linux cp命令使用

时间:2021-11-01 13:00:37

cp命令

cp命令用来将一个或多个源文件或者源目录复制到指定的文件或目录中。

语法

cp [OPTION]… [-T] SOURCE DEST
cp [OPTION]… SOURCE… DIRECTORY
cp [OPTION]… -t DIRECTORY SOURCE…

常用选项

-i:交互式
-r, -R: 递归复制目录及内部的所有内容;
-a: 归档,相当于-dR –preserv=all
-d:–no-dereference –preserv=links
–preserv[=ATTR_LIST]
-p: –preserv=mode,ownership,timestamp
-v: –verbose:显示拷贝时的详细信息
-f: –force:强制

示例

源是文件:
 * 目标不存在,则会新建目标文件,并将源内容填充至目标文件中

[root@ming ~]# touch a.txt
[root@ming ~]# cp a.txt cptest/b.txt
[root@ming ~]# ls cptest/
b.txt

 * 目标是已存在文件,会将源内容覆盖至目标文件中

[root@ming ~]# cp a.txt cptest/b.txt 
cp: overwrite ‘cptest/b.txt’? y

  这里为什么会提示覆盖呢?这是因为命令别名造成的,-i表示交互式,如果不想提示则目录起始点使用反斜杠

[root@ming ~]# alias 
alias cp='cp -i'
[root@ming ~]# \cp a.txt cptest/b.txt

 * 目标是目录,则会在目标目录下新建与源同名的文件,并将源的内容填充至新文件中

[root@ming ~]# touch c.txt
[root@ming ~]# cp c.txt cptest/
[root@ming ~]# ls cptest/
c.txt

 * 源是多个文件,则目标必须是目录且存在,其他情形均为出错

源是目录:需使用-r选项,表示递归
 * 目标不存在,则会创建指定目录,只能是单个源目录

[root@ming ~]# mkdir aa
[root@ming ~]# ll
total 4
drwxr-xr-x 2 root root 4096 Dec 27 13:44 aa
[root@ming ~]# cp -r aa ./bb 此目录下没有bb文件夹但是会创建
[root@ming ~]# ls
aa  bb
[root@ming ~]# cp -r aa bb ./cc 多个源目录时目标必须要存在,否则拷贝失败
cp: target ‘./cc’ is not a directory
[root@ming ~]# 

 * 目标存在且是文件则会报错,用脚想也知道不可能把目录下的所有东西放到一个文件中去
 * 目标存在且是目录,则会将源下所有文件和目录复制到目标中去