专栏首页C/C++基础Linux命令(25)——cp命令

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 条评论
登录 后参与评论

相关文章

  • Linux命令(65)——ld命令

    ld命令是二进制工具集GNU Binutils的一员,是GNU链接器,用于将目标文件与库链接为可执行程序或库文件。

    Dabelv
  • C++覆盖或删除指定位置的文件内容

    我们经常使用ofstream或者fstream可写文件,使用ifstream可以写文件,但需要设置文件的打开状态为ios::out。C++中IO流打开模式使用位...

    Dabelv
  • Linux 命令(119)—— diff 命令

    如果给定的文件名是 -,表示从标准输入读取内容。如果给定的文件是目录,则将会比较该目录中具有相同文件名的文件,默认情况下不会对其子目录文件进行任何比较操作。

    Dabelv
  • 普通文件和数据库存储的对比

    在大多数企业开发或Web开发中,都会涉及数据的存储和检索。存储数据有两种基本的方法:保存到普通文件中(File System),或者保存到数据库(Databas...

    八哥
  • InnoDB:表空间管理

    在InnoDB中,用户定义的表及其对应的索引数据存储在扩展名为.ibd的文件中。表空间有两种类型,常规(或共享)表空间和独立表空间文件。对于共享表空间而言,来自...

    MySQLSE
  • python打开文件的方式有哪些

    就可以打开一个文件进行操作。第二个参数为对文件的操作方式,’w’是写文件,已存在的同名文件会被清空,不存在则会创建一个;’r’是读取文件,不存在会报错;’a’是...

    砸漏
  • linux把一个文件的内容复制到另一个文件的末尾

    将把 dir 命令的标准屏幕输出重定向到文本文件 filelisting.txt 文件里

    砸漏
  • 每天 3 分钟,小闫带你学 Python(二十四)

    Life isn’t about finding yourself. Life is about creating yourself.

    小闫同学啊
  • Linux 的cp命令(1)

    功能: 复制文件或目录 说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录...

    joshua317
  • Python 文件I/O

    Python提供了必要的函数和方法进行默认情况下的文件基本操作。你可以用file对象做大部分的文件操作。

    Python知识大全

扫码关注云+社区

领取腾讯云代金券