码迷,mamicode.com
首页 > 系统相关 > 详细

Linux中的cp命令&老九门

时间:2016-07-31 16:06:01      阅读:321      评论:0      收藏:0      [点我收藏+]

标签:linux cp 老九门


cp命令详解

     技术分享


cp命令的老九门


技术分享


我们先看第一种情况:

1、源是一个文件,目标是不存在的

     使用 cp aa /testdir/dir1他会创建一个dir1的目标文件,并且将源的内容放到创建的dir目标文件中

技术分享


  2、源是一个文件,目标存在且为文件(上述命令执行后,dir1的文件就会被创建了),然后再次执行cp aa /testdir/dir1,会提示你是否覆盖dir1这个文件,选择y后,再次查看aa和dir1文件的属性,发现dir1的mtime发生了改变说明该文件是被修改了,的确完成了复制。

技术分享

    但是使用普通用户登录一个终端使用同样一个命令执行,就不会出现上述交互式的提醒,说明root用户定义了一个别名,利用了cp命令的-i选项,这时我们查看别名的定义的确找到这个别名。

技术分享

技术分享

此时在root用户下,我不想有交互式的提示,可以通过执行命令本身,可以有三种方式

    1、\cp   反斜线cp

    2、‘cp’  单引号cp

    3、/usr/bin/cp  使用绝对路径


-f选项的使用

    现在root用户下将/testdir/aa复制到andy用户的家目录下并且以dd命名

技术分享

    这时我们重新开一个终端,使用andy用户登录,查看家目录下面的文件

技术分享

    发现dd文件的属主和属组都是root用户的,这个我们不会奇怪,会保持原本的属性

这时使用cp aa dd 命令看是否可以将dd文件覆盖了,发现是权限不够的

技术分享

    这时使用cp -f aa dd 实现的是将dd文件先给删了,然后在重新以andy用户创建一个dd的文件,并且将aa文件的内容写到dd里面(为什么说将原来的dd文件删了呢?我们看新的dd文件的属主和属组就知道了,若果是没有删除dd文件,简单的执行覆盖操作,其dd原本的属主和属组属性是不会变的)通过查man帮助也是同一个意思

技术分享

技术分享


3、源是一个文件,目标存在且为目录

技术分享

    使用cp aa /home/命令(注意目录的写法),在目标/home/目录下会创建一个和aa同名的一个文件,并将源文件的内容写到home目录下创建的文件中


4、源是多个文件,目标是文件且不存在

    此时会报错执行不了

技术分享

    错误提醒你/home/xxxxxxx不是一个目录,因为cp命令要求的如果是多个源文件,其目标必须是目录文件,可以通过man帮助查看

技术分享


5、源是多个文件,目标是文件且存在

    同样的道理,根据man帮助,目标必须是目录文件,因此也同样是报错的

技术分享


6、源是多个文件,目标是目录文件且存在

    注意目录的写法,这个很好理解因为/home目录下面存在aa文件,因此执行cp aa bb cc /home/操作时会提醒下是否覆盖,选择覆盖后,然后到/home目录下的确可以看到有aa bb cc 文件,这个很容易理解。

技术分享


7、源是目录文件,目标是不存在的(复制目录文件必须使用-r 选项实现递归的作用)

技术分享

    目标不存在,不管是文件还是目录,都会创建指定的/aa/目录或者/bb文件,复制源目录下面的所有文件内容到目标文件或者目录,通过ls查看,的确是给复制过来了。


8、源是目录文件,目标已经存在且为文件

    如果源是目录文件,目标是存在的文件,执行cp -r /etc/sysconfig/ /gg 则会报错,意思说目录不能覆盖文件

技术分享


9、源是目录文件,目标已经存在且为目录

    首先/gg文件不存在,第一次执行cp -r /etc/sysconfig/ /gg 会按照第7种情况,会把sysconfig目录下的内容复制到/gg文件内,此时/gg就为目录了,然后再次执行cp -r /etc/sysconfig/ /gg,此时会在目标/gg下新建一个sysconfig的目录,并且把目录的内容放置在新建的sysconfig里面,这时ls /gg 会发现里面多了一个sysconfig的目录,如果再次执行cp -r /etc/sysconfig/ /gg 就会出现是否覆盖的提醒,若不需提醒是使用命令本身,而不是使用我们理解的-f选项(表面意思是强制,实际是把原文件删了,再重新建一个)

技术分享




本文出自 “Linux Study@薛帅” 博客,请务必保留此出处http://xueshuai.blog.51cto.com/11578473/1832330

Linux中的cp命令&老九门

标签:linux cp 老九门

原文地址:http://xueshuai.blog.51cto.com/11578473/1832330

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!