每天一个linux命令-cp

cp命令用于文件及目录的复制,是linux常用的命令之一,一般情况下,shell会设置一个别名alias cp=‘cp -i‘,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不管你是否使用-i参数。但是如果是在shell脚本中执行cp时,没有-i参数时不会询问是否覆盖。这说明命令行和shell脚本的执行方式有些不同。

1.命令格式:

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

cp [OPTION]... SOURCE... DIRECTORY

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

2.命令参数:

cp [-aifpru] [源文件][目标文件]

-a:相当于-pdr

-d:若源文件为链接文件(like file),则复制链接文件属性而非档案本身

-f:强制,若目标档案已经存在且无法开启,则移除后在尝试

-i:若目标文件已经存在,在覆盖时会先询问;

-p:连同档案的属性一起复制过来,而非使用默认属性

-r:递归,用于复制目录

-u:若目标文件存在。则目标文件比源文件旧时才复制;

3.命令实例:

1.复制单个文件到目标目录,文件在目标目录中不存在。

[[email protected] ~]# cp a.txt backup/
[[email protected] ~]# ll a.txt 
-rw-r--r--. 1 root root 4 Jun 30 14:56 a.txt
[[email protected] ~]# ll backup/
total 4
-rw-r--r--. 1 root root 4 Jul  4 22:07 a.txt
[[email protected] ~]#

说明:会发现两个文件的时间戳是不一样的,如果想要目标文件和源文件属性一样,可以使用-a选项

2.复制单个文件到目标目录,文件在目标目录中已存在,复制后的文件与源文件属性一样。

[[email protected] ~]# ll a.txt 
-rw-r--r--. 1 root root 4 Jun 30 14:56 a.txt
[[email protected] ~]# cp -a a.txt backup/
cp: overwrite `backup/a.txt‘? y
[[email protected] ~]# ll backup/
total 4
-rw-r--r--. 1 root root 4 Jun 30 14:56 a.txt
[[email protected] ~]#

说明:cp在复制文件时,如果目标目录的文件是已存在的,会提示是否覆盖文件,这是由于命令行下的cp是有别名的,使用alias | grep "cp"查看cp别名,alias cp=‘cp -i‘,-i参数是若目标文件已经存在,在覆盖时会先询问;如果不想提示询问直接覆盖,可以cp -n 或者/bin/cp。

3.复制目录:

目标目录不存在时

[[email protected] ~]# ls
anaconda-ks.cfg  a.txt  backup  b.txt  c.txt  data  d.txt  ett.txt  e.txt  install.log  install.log.syslog  mkdirtest  oldboy.txt  readme.txt  test
[[email protected] ~]# cp -a mkdirtest mkdirtest2
[[email protected] ~]# ll mkdirtest2
total 24
drwxr-xr-x. 2 root root 4096 Jun 29 02:38 bin
drwxr-xr-x. 4 root root 4096 Jun 29 02:38 config
drwxr-xr-x. 4 root root 4096 Jun 29 02:38 info
drwxr-xr-x. 2 root root 4096 Jun 29 02:38 lib
drwxr-xr-x. 2 root root 4096 Jun 29 02:38 lib32
drwxr-xr-x. 2 root root 4096 Jun 29 02:38 sbin
[[email protected] ~]# ll mkdirtest
total 24
drwxr-xr-x. 2 root root 4096 Jun 29 02:38 bin
drwxr-xr-x. 4 root root 4096 Jun 29 02:38 config
drwxr-xr-x. 4 root root 4096 Jun 29 02:38 info
drwxr-xr-x. 2 root root 4096 Jun 29 02:38 lib
drwxr-xr-x. 2 root root 4096 Jun 29 02:38 lib32
drwxr-xr-x. 2 root root 4096 Jun 29 02:38 sbin

目标目录已存在时

[[email protected] ~]# mkdir mkdirtest3
[[email protected] ~]# ll mkdirtest3
total 0
[[email protected] ~]# cp -a mkdirtest mkdirtest3
[[email protected] ~]# ll mkdirtest3
total 4
drwxr-xr-x. 8 root root 4096 Jun 29 02:38 mkdirtest
[[email protected] ~]#

说明:在复制目录时,当目标目录不存在时,复制时会先创建目标目录,然后将源目录内的内容复制到目标目录;当目标目录存在时,会直接将源目录复制到已存在的目标目录下。

时间: 2024-11-04 18:52:52

每天一个linux命令-cp的相关文章

每天一个linux命令(8):cp 命令

cp 命令用来复制文件或者目录,是Linux系统中最常用的命令之一.一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在, 就会询问是否覆盖,不管你是否使用-i参数.但是如果是在shell脚本中执行cp时,没有-i参数时不会询问是否覆盖.这说明命令行和shell脚本的 执行方式有些不同. 1.命令格式: 用法: cp [选项]... [-T] 源 目的 或:cp [选项]... 源... 目录 或:cp [选项]... -t 目录 源... 2.命令功能: 将源文件复

每天一个linux命令:cp(8)

cp cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录.它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下.cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误 格式 cp [选项] [参数] 参数选项 参数 备注 -a 此参数的效果和同时指定"-dpR"参数相同: -d 当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录: -f 强行复制文件或目录,不

【转载】每天一个Linux命令

每天一个linux命令(1)  : ls 命令 每天一个linux命令(2)  : cd 命令 每天一个linux命令(3)  : pwd 命令 每天一个linux命令(4)  : mkdir 命令 每天一个linux命令(5)  : rm 命令 每天一个linux命令(6)  : rmdir 命令 每天一个linux命令(7)  : mv 命令 每天一个linux命令(8)  : cp 命令 每天一个linux命令(9)  : touch 命令 每天一个linux命令(10): cat 命令

每天一个linux命令目录(转)

转载: http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html 开始详细系统的学习linux常用命令,坚持每天一个命令,所以这个系列为每天一个linux命令.学习的主要参考资料为: 1.<鸟哥的linux私房菜> 2.http://codingstandards.iteye.com/blog/786653 3.linux命令五分钟系列 4.其他互联网资料,google,baidu等搜索引擎 一. 文件目录操作命令: 1.每天一个

每天一个 Linux 命令(20):find命令之exec

find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了. exec解释: -exec  参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠. {}   花括号代表前面find查找出来的文件名. 使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的.在有些操作系统中只允许-ex

每天一个linux命令(20):find命令之exec

find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了. exec解释: -exec  参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠. {}   花括号代表前面find查找出来的文件名. 使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的.在有些操作系统中只允许-ex

[转]每天一个linux命令目录

http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html 开始详细系统的学习linux常用命令,坚持每天一个命令,所以这个系列为每天一个linux命令.学习的主要参考资料为: 1.<鸟哥的linux私房菜> 2.http://codingstandards.iteye.com/blog/786653 3.linux命令五分钟系列 4.其他互联网资料,google,baidu等搜索引擎 一. 文件目录操作命令: 1.每天一个linu

【转】每天一个linux命令目录

原文网址:http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html 开始详细系统的学习linux常用命令,坚持每天一个命令,所以这个系列为每天一个linux命令.学习的主要参考资料为: 1.<鸟哥的linux私房菜> 2.http://codingstandards.iteye.com/blog/786653 3.linux命令五分钟系列 4.其他互联网资料,google,baidu等搜索引擎 一. 文件目录操作命令: 1.每天一

每天一个linux命令目录

开始详细系统的学习linux常用命令,坚持每天一个命令,所以这个系列为每天一个linux命令.学习的主要参考资料为: 1.<鸟哥的linux私房菜> 2.http://codingstandards.iteye.com/blog/786653 3.linux命令五分钟系列 4.其他互联网资料,google,baidu等搜索引擎 一. 文件目录操作命令: 1.每天一个linux命令(1):ls命令 2.每天一个linux命令(2):cd命令  3.每天一个linux命令(3):pwd命令 4.每