Linux命令(25)——cp命令

1.简介

cp命令主要用于复制文件或目录,可以将一个或多个源文件或者目录复制到指定的目的文件或目录,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。

2.命令格式

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

3.选项说明

-a,--archive:此参数的效果和同时指定"-dR --preserve=all"参数相同;
--backup[=CONTROL]:备份即将被覆盖的目的文件;
-b:等同与--backup,但不接受参数;
--copy-contents:递归拷贝时,拷贝特殊文件的内容;
-d:当复制符号连接时,保留符号连接; 
-f,--force:强行复制文件或目录,不论目标文件或目录是否已存在; 
-i,--interactive:覆盖既有文件之前先询问用户; 
-H:遵循源文件中的命令行符号链接;
-l,--link:对源文件建立硬连接,而非复制文件;
-L, --dereference:总是遵循源文件中的命令行符号链接;
-n, --no-clobber:不覆盖既有文件;
-P,--no-dereference:不遵循源文件的符号连接;
-p:等同于--preserve=mode,ownership,timestamps;
--preserve[=ATTR_LIST]:保留指定的文件属性,而非默认的mode,ownership,timestamps)。其它的属性也可以指定,如:context, links, xattr, all;
-c:等同于--preserve=context;
--no-preserve=ATTR_LIST:不保留指定的文件属性;
--parents:在目录下使用完整的源文件名;
-R,-r,--recursive:递归处理,将指定目录下的所有文件与子目录一并处理;
--reflink[=WHEN]:控制克隆/CoW 副本。请查看下面的内容;
--remove-destination:移动每一个已经存在的目标文件;
--sparse=WHEN:控制创建稀疏文件;
--strip-trailing-slashes:删除参数SOURCE中所有目录末端的斜杠;
-s,--symbolic-link:对源文件建立符号连接,而非复制文件;
-S, --suffix=SUFFIX:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-t, --target-directory=DIRECTORY:拷贝所有SOURCE指定的文件到目标目录DIRECTORY;
-T, --no-target-directory:没有目标目录,将目标文件DEST视为正常文件;
-u,--update:使用这项参数后只会在源文件的更改时间较目标文件新时或是名称相互对应的目标文件并不存在时,才复制文件;
-v, --verbose:冗余模式执行cp命令,解释cp的执行过程;
-x, --one-file-system:保留在当前的文件系统上;
-Z, --context=CONTEXT:将指定的文本内容变为安全的内容,该选项仅限于SELinux内核使用;
--help:显示帮助信息;
--version:显示版本信息;

选项补充说明。 (1)默认情况下,源文件的稀疏性仅仅通过简单的方法判断,对应的目标文件目标文件也被为稀疏。这是因为默认情况下使用了--sparse=auto参数。如果明确使用 --sparse=always 参数则不论源文件是否包含足够长的0 序列也将目标文件创文 建为稀疏件。使用--sparse=never参数禁止创建稀疏文件。

(2)当指定了--reflink[=always]参数时,执行轻量化的复制,即只在数据块被修改的情况下才复制。如果复制失败或者同时指定了--reflink=auto,则返回标准复制模式。

(3)备份文件的后缀为”~”,除非以--suffix选项或是SIMPLE_BACKUP_SUFFIX环境变量指定。版本控制的方式可通过--backup选项或VERSION_CONTROL环境变量来选择。以下是可用的变量值: none, off:不进行备份(即使使用了–backup 选项); numbered, t:备份文件加上数字进行排序; existing, nil:若有数字的备份文件已经存在则使用数字,否则使用普通方式备份; simple, never:永远使用普通方式备份。

(4)有一个特别情况,如果同时指定--force--backup选项,而源文件和目标文件是同一个已存在的一般文件的话,cp会将源文件备份。

4.常用示例

(1)复制dir目录到dir2。

cp -r dir dir2

(2)复制文件a、b、c、d到dir2。

cp a b c d dir2

(3)交互式地将目录/usr/men中的以m打头的所有.c文件复制到目录/usr/zh中。

cp -i /usr/men m*.c /usr/zh

我们在Linux下使用cp命令复制文件时候,有时候会需要覆盖一些同名文件,覆盖文件的时候都会有提示:需要不停的按Y来确定执行覆盖。


参考文献

[1]man cp [2]百度知道.cp简介

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏晓晨的专栏

nodejs总结之日志模块log4js

34640
来自专栏北京马哥教育

29 条运维工程师必会实用 Linux 命令

虽然Linux发行版支持各种各样的饿GUI(graphical user interfaces),但在某些情况下,Linux的命令行接口(bash)仍然是简单...

33290
来自专栏web编程技术分享

小兔Java教程 - 三分钟学会Java文件上传

516120
来自专栏Coding迪斯尼

java开发系统内核:使用LDT保护进程数据和代码

11630
来自专栏技术小站

RESTful小拓展

RESTful 即Resource Representation State Transfer 相对应Resource 资源层,Representation 表...

15020
来自专栏vue学习

33、vuex初探(一)

看完以后应该是有点懵逼的,所以这就是这篇文章存在的意义了:就是让你不那么懵逼;总归理论与实践相结合才能真正弄明白一个东西,所以我们简单实践一下。

17460
来自专栏腾讯Bugly的专栏

Android 混淆那些事儿

本文主要讲述了代码混淆和资源混淆的原理,Studio默认的混淆方案,混淆的参数,以及如何对Apk进行代码混淆(自定义混淆文件)和资源混淆(结合微信混淆和美团混淆...

1K50
来自专栏步履前行

Spring Retry

  在我们的业务场景中,经常要调用其他的API来获取信息,比如我们的业务场景需要依赖个人信息来处理,这个时候调用个人信息服务的API,但是由于可能同一时段多方在...

45930
来自专栏linux、Python学习

案例+解读,来自有道大神的17个常用Linux命令深度解析

命令后带(Mac)标记的,表示该命令在Mac OSX下测试,其它的在Debian下测试。

17360
来自专栏Phoenix的Android之旅

Gradle自定义插件之扩展配置

上一篇文章,我们介绍了Gradle自定义插件的几种基本方法。我们向外提供的插件,一般会把一些经常变化的配置放在Gradle内, 需要变化时修改Gradle文件,...

25120

扫码关注云+社区

领取腾讯云代金券